Descripción
February 4, 2026 · View on GitHub
API IDEE 🔌 IDEE.plugin.Locator
Descripción
Plugin que permite utilizar diferentes herramientas para la localización:
- Servicio REST geocoder-directo: permite la búsqueda de direcciones postales, topónimos, puntos de interés, entidades de población, unidades administrativas, referencias catastrales (servicio SOAP de la Dirección General de Catastro) y solamente para su visualización los códigos postales.
- Servicio REST geocoder-inverso: Obtener dirección en un punto del mapa.
- Localizar coordenadas en varios SRS.
- Buscar por polígono y parcela.
- Buscar por catastro.
- Consultar referencia catastral.
Esta extensión es una fachada del servicio geocoder. En la siguiente dirección se puede encontrar toda la información sobre el servicio geocoder: https://www.idee.es/resources/documentos/Cartociudad/CartoCiudad_ServiciosWeb.pdf#page=6&zoom=100,109,585
Dependencias
Para que el plugin funcione correctamente es necesario importar las siguientes dependencias en el documento html: Para uso de implementación OpenLayers:
- locator.ol.min.js
- locator.ol.min.css
Para uso de implementación Cesium:
- locator.cesium.min.js
- locator.cesium.min.css
<link href="https://componentes.idee.es/api-idee/plugins/locator/locator.ol.min.css" rel="stylesheet" />
<script type="text/javascript" src="https://componentes.idee.es/api-idee/plugins/locator/locator.ol.min.js"></script>
Uso del histórico de versiones
Existe un histórico de versiones de todos los plugins de API-IDEE en api-idee-legacy para hacer uso de versiones anteriores. Ejemplo:
<link href="https://componentes.idee.es/api-idee/plugins/locator/locator-1.0.0.ol.min.css" rel="stylesheet" />
<script type="text/javascript" src="https://componentes.idee.es/api-idee/plugins/locator/locator-1.0.0.ol.min.js"></script>
Parámetros
El constructor se inicializa con un JSON con los siguientes atributos:
-
position: Ubicación del plugin sobre el mapa.
- 'TL': (top left) - Arriba a la izquierda.
- 'TR': (top right) - Arriba a la derecha (por defecto).
- 'BL': (bottom left) - Abajo a la izquierda.
- 'BR': (bottom right) - Abajo a la derecha.
- 'TC': (top center) - Arriba en el centro.
-
collapsed: Indica si el plugin viene colapsado de entrada (true/false). Por defecto: true.
-
collapsible: Indica si el plugin puede abrirse y cerrarse (true) o si permanece siempre abierto (false). Por defecto: true.
-
tooltip: Texto que se muestra al dejar el ratón encima del plugin. Por defecto: Buscar un lugar.
-
zoom: Zoom que aplicará al mostrar resultado de tipo puntual. Por defecto: 16.
-
useProxy: Determina si se desea que las peticiones que se realizan en el control de búsqueda de lugares se realizan con el proxy o no. Por defecto: true.
- Nota: sólo afecta a las peticiones de búsquedas por lugares. Las peticiones a catastro siempre se realizarán con el proxy.
-
pointStyle: Tipo de icono a mostrar cuando se encuentra un resultado de tipo puntual.
- 'pinAzul' (por defecto)
- 'pinRojo'
- 'pinMorado'
-
isDraggable: Permite mover el plugin por el mapa. Por defecto: false.
-
byParcelCadastre: Indica si el control InfoCatastro se añade al plugin (true/false/Object). Por defecto: true. Para modificar los valores por defecto de este control se seguirá el siguiente formato:
- cadastreWMS: Url del servicio para la consulta por referencia catastral. Por defecto: 'https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCoordenadas.asmx/Consulta_RCCOOR'.
- CMC_url: Url del servicio para la consulta de municipios de una provincia. Por defecto: 'https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejeroCodigos.asmx/ConsultaMunicipioCodigos'.
- DNPPP_url: Url del servicio para la consulta de datos no protegidos para un inmueble por su polígono parcela. Por defecto: 'https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejeroCodigos.asmx/Consulta_DNPPP_Codigos'.
- CPMRC_url: Url del servicio para consulta de coordenadas por Provincia, Municipio y Referencia Catastral. Por defecto: 'https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCoordenadas.asmx/Consulta_CPMRC'.
byParcelCadastre: { cadastreWMS: 'https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCoordenadas.asmx/Consulta_RCCOOR', CMC_url: 'https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejeroCodigos.asmx/ConsultaMunicipioCodigos', DNPPP_url: 'https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejeroCodigos.asmx/Consulta_DNPPP_Codigos', CPMRC_url: 'https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCoordenadas.asmx/Consulta_CPMRC' }(Válido sólo para la creación del plugin por JS y API-REST en base64).
-
byCoordinates: Indica si el control XYLocator se añade al plugin (true/false/Object). Por defecto: true. Para modificar los valores por defecto de este control se seguirá el siguiente formato:
- projections: Proyecciones de origen que se mostrarán para seleccionar las coordenadas a localizar. Por defecto los valores posibles son:
[ { title: 'ETRS89 geographic (4258) dd', code: 'EPSG:4258', units: 'd' }, { title: 'WGS84 geographic (4326) dd', code: 'EPSG:4326', units: 'd' }, { title: 'ETRS89 geographic (4258) dms', code: 'EPSG:4258', units: 'dms' }, { title: 'WGS84 geographic (4326) dms', code: 'EPSG:4326', units: 'dms' }, { title: 'WGS84 Pseudo Mercator (3857)', code: 'EPSG:3857', units: 'm' }, { title: 'ETRS89 UTM zone 31N (25831)', code: 'EPSG:25831', units: 'm' }, { title: 'ETRS89 UTM zone 30N (25830)', code: 'EPSG:25830', units: 'm' }, { title: 'ETRS89 UTM zone 29N (25829)', code: 'EPSG:25829', units: 'm' }, { title: 'ETRS89 UTM zone 28N (25828)', code: 'EPSG:25828', units: 'm' }, ]- help: URL de ayuda.
byCoordinates: { projections: [ { title: 'ETRS89 geographic (4258) dd', code: 'EPSG:4258', units: 'd' }, { title: 'ETRS89 geographic (4258) dms', code: 'EPSG:4258', units: 'dms' }, { title: 'ETRS89 UTM zone 31N (25831)', code: 'EPSG:25831', units: 'm' }, ], help: 'https://epsg.io/' }(Válido sólo para la creación del plugin por JS y API-REST en base64).
-
byPlaceAddressPostal: Indica si el control IGNSearchLocator se añade al plugin (true/false/Object). Por defecto: true. Para modificar los valores por defecto de este control se seguirá el siguiente formato:
- maxResults: Número de resultados en la consulta. Por defecto: 99. Para ajustar este valor a las necesidades de cada visualizador, se recomienda revisar la documentación del servicio Geocoder: https://www.idee.es/resources/documentos/Cartociudad/CartoCiudad_ServiciosWeb.pdf#page=6&zoom=100,109,585
- noProcess: En geocoder, indica las entidades que no se incluirán en los resultados. Admite combinación de 'municipio, poblacion, toponimo, callejero, carretera, portal, provincia, ngbe, expendeduria, comunidad autónoma'. Por defecto: ''.
- countryCode: Código por defecto del país en la petición a geocoder. Por defecto: 'es'.
- reverse: Valor booleano que indica si la funcionalidad obtener dirección en un punto del mapa está activada (true/false). Por defecto: true.
- resultVisibility: Indica si se muestra o no la geometría del elemento localizado (true/false). Por defecto: true.
- urlCandidates: Url del servicio candidates de geocoder. Por defecto: 'https://www.cartociudad.es/geocoder/api/geocoder/candidatesJsonp'.
- urlFind: Url del servicio find de geocoder. Por defecto: 'https://www.cartociudad.es/geocoder/api/geocoder/findJsonp'.
- urlReverse: Url del servicio geocoding inverso. Por defecto: 'https://www.cartociudad.es/geocoder/api/geocoder/reverseGeocode'.
- geocoderCoords: Búsqueda inicial por longitud, latitud, mediante el uso del Servicio REST geocoder-inverso. Se sitúa en la posición indicada al iniciar la extensión. Por defecto: [].
- requestStreet: URL del findJSON de un resultado de búsqueda, para que aparezca cargado al inicio. Por defecto: ''.
byPlaceAddressPostal: { maxResults: 10, noProcess: 'municipio, poblacion', countryCode: 'es', reverse: true, resultVisibility: true, urlCandidates: 'http://visores-cnig-gestion-publico.desarrollo.guadaltel.es/geocoder/api/geocoder/candidatesJsonp', urlFind: 'http://visores-cnig-gestion-publico.desarrollo.guadaltel.es/geocoder/api/geocoder/findJsonp', urlReverse: 'http://visores-cnig-gestion-publico.desarrollo.guadaltel.es/geocoder/api/geocoder/reverseGeocode', requestStreet: 'https://www.cartociudad.es/geocoder/api/geocoder/findJsonp?q=Sevilla&type=provincia&tip_via=null&id=41&portal=null&extension=null', geocoderCoords: [-5.741757, 41.512058] }(Válido sólo para la creación del plugin por JS y API-REST en base64).
API-REST
URL_API?locator=position*collapsed*collapsible*tooltip*zoom*pointStyle*isDraggable*byParcelCadastre*byCoordinates*byPlaceAddressPostal
| Parámetros | Opciones/Descripción | Disponibilidad |
| position | TR/TL/BR/BL | Base64 ✔️ | Separador ✔️ |
| collapsed | true/false | Base64 ✔️ | Separador ✔️ |
| collapsible | true/false | Base64 ✔️ | Separador ✔️ |
| tooltip | tooltip | Base64 ✔️ | Separador ✔️ |
| zoom | zoom | Base64 ✔️ | Separador ✔️ |
| useProxy | useProxy | Base64 ✔️ | Separador ✔️ |
| pointStyle | pinAzul/pinRojo/pinMorado | Base64 ✔️ | Separador ✔️ |
| isDraggable | true/false | Base64 ✔️ | Separador ✔️ |
| byParcelCadastre (*) | true/false | Base64 ✔️ | Separador ✔️ |
| byCoordinates (*) | true/false | Base64 ✔️ | Separador ✔️ |
| byPlaceAddressPostal (*) | true/false | Base64 ✔️ | Separador ✔️ |
https://componentes.idee.es/api-idee?locator=TL*true*true*tooltip*16
https://componentes.idee.es/api-idee?locator=TL*true*true*tooltip*16*pinAzul*true*false*true*true
Ejemplo de uso
Para la codificación en base64 del objeto con los parámetros del plugin podemos hacer uso de la utilidad IDEE.utils.encodeBase64. Ejemplo:
IDEE.utils.encodeBase64(obj_params);
Ejemplo de constructor del plugin: {position:'TL', collapsible: true, collapsed: true, tooltip: 'Localización', byParcelCadastre: true, byCoordinates: false, byPlaceAddressPostal: true}
https://componentes.idee.es/api-idee?locator=base64=eyJwb3NpdGlvbiI6IlRMIiwiY29sbGFwc2libGUiOnRydWUsImNvbGxhcHNlZCI6dHJ1ZSwidG9vbHRpcCI6IkxvY2FsaXphY2nDs24iLCJieVBhcmNlbENhZGFzdHJlIjp0cnVlLCJieUNvb3JkaW5hdGVzIjpmYWxzZSwiYnlQbGFjZUFkZHJlc3NQb3N0YWwiOnRydWV9
Eventos
- infocatastro:locationCentered
- Evento que se dispara cuando se ha localizado la búsqueda del plugin sobre el mapa.
- Expone, como parámetro devuelto, el punto actual calculado en la búsqueda.
mp.on('infocatastro:locationCentered', (data) => {
window.alert(`zoom: ${data.zoom}
center: ${data.center[0].toFixed(2)}, ${data.center[1].toFixed(2)}`);
});
- xylocator:locationCentered
- Evento que se dispara cuando se ha localizado la búsqueda del plugin sobre el mapa.
- Expone, como parámetro devuelto, el punto actual calculado en la búsqueda.
mp.on('xylocator:locationCentered', (data) => {
window.alert(`zoom: ${data.zoom}
center: ${data.center[0].toFixed(2)}, ${data.center[1].toFixed(2)}`);
});
- ignsearchlocator:entityFound
- Evento que se dispara cuando se ha localizado la búsqueda del plugin sobre el mapa.
- Expone, como parámetro devuelto, el extent actual calculado en la búsqueda
pluginignsearchlocator.on('ignsearchlocator:entityFound', (extent) => {
// eslint-disable-next-line no-alert
window.alert('Encontrado');
});
Ejemplo de uso
const map = IDEE.map({
container: 'map'
});
const mp = new IDEE.plugin.Locator({
position: 'TL',
collapsible: true,
collapsed: true,
zoom: 16,
pointStyle: 'pinMorado',
byParcelCadastre: false,
byCoordinates: true,
byPlaceAddressPostal: {
maxResults: 5,
noProcess: 'municipio, poblacion',
reverse: false,
geocoderCoords: [-5.741757, 41.512058],
},
isDraggable: false,
});
map.addPlugin(mp);
👨💻 Desarrollo
Para el stack de desarrollo de este componente se ha utilizado
- NodeJS Version: 14.16
- NPM Version: 6.14.11
- Entorno Windows.
📐 Configuración del stack de desarrollo / Work setup
🐑 Clonar el repositorio / Cloning repository
Para descargar el repositorio en otro equipo lo clonamos:
git clone [URL del repositorio]
1️⃣ Instalación de dependencias / Install Dependencies
npm i
2️⃣ Arranque del servidor de desarrollo / Run Application
npm start:ol
npm start:cesium
📂 Estructura del código / Code scaffolding
/
├── src 📦 # Código fuente
├── task 📁 # EndPoints
├── test 📁 # Testing
├── webpack-config 📁 # Webpack configs
└── ...
📌 Metodologías y pautas de desarrollo / Methodologies and Guidelines
Metodologías y herramientas usadas en el proyecto para garantizar el Quality Assurance Code (QAC)
- ESLint
⛽️ Revisión e instalación de dependencias / Review and Update Dependencies
Para la revisión y actualización de las dependencias de los paquetes npm es necesario instalar de manera global el paquete/ módulo "npm-check-updates".
# Install and Run
$npm i -g npm-check-updates
$ncu