Skip to content

2.8. Acceso librerías base

yaizavalidador edited this page Jun 27, 2023 · 1 revision

La API es una capa que se coloca sobre una librería de mapas base, como pueden ser OpenLayers o Leaflet. Tiene diferentes finalidades, siendo la principal la de independizar el uso directo de las librerías. Facilitando por ejemplo, la migración o actualización de las librerías de mapas subyacentes de una manera más transparente para el usuario, que si usará únicamente la API CNIG. Por ende, la actualización del código a esas nuevas versiones se convierte en una tarea trivial, beneficiándose de las mejoras que ello conlleva.

Para ello, se ofrecen en la API las operaciones de construcción y manipulación de mapas y fuentes de datos más comunes en los visualizadores web. Sin embargo, para que esto no suponga una limitación, el programador siempre podrá acceder a los objetos mapa y capa de la librería que use, y manipularlos directamente.

Esta práctica no es recomendable porque estará generando una dependencia directa de nuestro código con la librería base, pero en caso de ser necesario, puede hacerse tal como muestra el siguiente ejemplo:

// Construimos un mapa
mapajs = M.map({
     container:"map",
     controls:['scale','location','backgroundlayers']
});

// Accedemos al mapa de OpenLayers
const mapaOL = mapajs.getMapImpl();

// Puede hacerse lo mismo con los objetos de tipo Layer
// En este caso, estamos usando la implementación de OL
const layerOL = layer.getImpl().getOL3Layer();
// Se puede incluir una capa de OL usando el método setOL3Layer
const nuevalayerOL = layer.getImpl().setOL3Layer(layerOL);

Para la manipulación del mapa de la librería base se tiene que acceder a .getMapImpl(), en el caso de las capas se accede a .getImpl() y se utilizan los métodos .getOL3Layer() y .setOL3Layer().

Así pues, para clarificar .getOL3Layer() y .setOL3Layer() son métodos de la librería base de OpenLayers. En el caso de .getOL3Layer() que devuelve la capa asociada con el mapa y por otro lado, .setOL3Layer() limpia la capa existente en el mapa y añade la capa de nuevo al mapa. En las versiones ≤ v6.0.0, el método de acceso es .getOL3Layer() y .setOL3Layer()

Otra forma de manipulación de la librería base es utilizando el parámetro vendorOptions. Este parámetro recibe la instancia de la clase "source" de OL, dependiendo del tipo de capa se utilizará tipo diferente de "source". Podrás encontrar más información en la wiki en las diferentes capas.

En el desarrollo de una página web que accede y manipula directamente los objetos de la librería de mapas base, es recomendable que ese tipo de código se independice del resto, aplicando un enfoque fachada/implementación, de manera que sea fácil identificarlo, en el caso de que se tenga que tratar. Es por ejemplo lo que se hace en los plugins.

Ejemplos funcionales Acceso a mapa OL Extensión escala gráfica OL Extensión de pantalla completa OL Popup personalizado desde OL

1.INICIO
   1.1. Componentes de la API-CNIG
   1.2. Documentación y Puntos de acceso
   1.3. Primeros pasos
   1.4. Diagrama API CNIG

2. MAPA
2.1. Capas

 ■ 2.1.1. Fuentes
   • 2.1.1.1. Capas vectoriales
     + Vector
     + WFS
     + GeoJSON
     + KML
     + MVT
     + OGCAPIFeatures
     + MBTilesVector
     + GenericVector
   • 2.1.1.2. Capas ráster
     + WMS
     + WMTS
     + TMS
     + XYZ
     + OSM
     + MBTiles
     + GenericRaster
   • 2.1.1.3. Capas rápidas

 ■ 2.1.2. Simbolización
   • 2.1.2.1. Genérica
     + Puntos
     + Líneas
     + Polígonos
   • 2.1.2.2. Básica
     + Puntos
     + Líneas
     + Polígonos
   • 2.1.2.3. Avanzada
     + Coropletas
     + Proporcional
     + Categorías
     + Estadísticos
     + Mapas de Calor
     + Cluster
     + Línea de flujo
     + Composición

 ■ 2.1.3. Filtros

    2.3. Plugins

2.4. Paneles

  ■ Creación de panel desde cero sin controles

  ■ Tutorial Panel de un único control

  ■ Tutorial Panel de un único control con más de un botón

  ■ Tutorial Panel con más de un control

2.5. Eventos

  ■ Gestión de eventos
  ■ Gestión de eventos en controles personalizados

    2.6. Internacionalización

    2.7. Configuración

    2.8. Acceso librerías base

3. UTILIDADES

4. PROXY

5. API REST
 5.1. Parametrización API-REST
 5.2. Base de Datos API-REST
 5.3. API REST Actions
 5.4. Servicio de correos electrónicos
 5.5. Capas rápidas

6. PARAMETRIZACIÓN VISUALIZADORES

7. SOLUCIÓN DE PROBLEMAS

8. PROCESO DE VERSIONADO

9. GUÍA DE DESARROLLO
  > Guía de desarrollo de plugins
  > Guía de desarrollo de visualizadores con React
  > Guía de desarrollo de componentes
  > Guía para el desarrollo de API-CNIG
  > Compilación proyecto API-CNIG

Clone this wiki locally