Skip to content

Crear Control Personalizado

Álvaro Ramírez edited this page May 9, 2024 · 10 revisions

Existe la posibilidad de crear controles personalizados en un mapa. Para guiar al desarrollador, se va a explicar un ejemplo de uso donde haciendo click sobre el mapa, aparecerá una alerta de html.

Para llegar a ello, se siguen los siguientes pasos:

1./ Creamos un objeto "control", a partir de la implementación de la clase control y dándole un nombre al nuevo control. Este objeto control nos servirá de plantilla para darle una funcionalidad :

    // 1. Se crea un control, primer parámetro la implementación del control, segundo parámetro el nombre del control
    const control = new M.Control(new M.impl.Control(), 'ControlPrueba');

2./ Se sobrescribe el método createview, que es el que tiene la lógica del control. Tiene la peculiaridad que tiene que devolver un objeto html, en este ejemplo devolveremos un div vacío, pero cuando un control se integra en un panel, el contenido del panel se añade a partir de este html del control.

    // 2. Se sobrescribe el método, tiene que devolver un elemento HTML
    control.createView = (map) => {
      const contenedor = document.createElement('div');
      map.on('click', (evt) => {
        console.log(map.getControls())
        alert('Nombre del control: '+map.getControls()[0].name)
      });
      return contenedor;
    }

3./ Por último se añade el control al mapa

    // 3. Se añade el control al panel
    const mapajs = M.map({
      container: 'mapjs',
    });
    mapajs.addControls(control);

Para crear un control que se pueda activar/desactivar desde un botón en el mapa, habrá que crear un panel primero y añadir este panel al mapa.

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