Skip to content

Crear Control Personalizado

Jesús Guillen Encinas edited this page Feb 26, 2026 · 1 revision

Existe la posibilidad de crear controles personalizados en un mapa. A continuación, se muestra un ejemplo de uso donde, haciendo click sobre el control, aparece 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 IDEE.Control(new IDEE.impl.Control(), 'ControlPrueba');

2./ Se sobrescribe el método createview, que es el que tiene la lógica del control. Tiene la peculiaridad de que tiene que devolver un objeto html. 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');
            contenedor.id = 'ControlPrueba'
            contenedor.style['backgroundColor'] = 'black';
            contenedor.style['height'] = '50px';
            contenedor.style['width'] = '50px';
            contenedor.onclick = () => {
                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 = IDEE.map({
      container: 'mapjs',
    });
    mapajs.addControls(control);

Si se desea añadir la ayuda de este control para mostrarla en el plugin Help, se debe realizar los siguientes pasos:

1./ Crear método getHelp con el contenido de la ayuda.

control.getHelp = () => {
  return {
    title: 'Mi Control Personalizado',
    content: new Promise((success) => {
      let html = '<div><p>Información del control</p></div>';
      html = IDEE.utils.stringToHtml(html);
      success(html);
    }),
  };
}

2./ Añadir el plugin de ayuda (Help) al mapa.

const help = new IDEE.plugin.Help({});
mapajs.addPlugin(help);

// Una vez el plugin esté añadido al mapa, añadimos a la lista de controles el control personalizado      
setTimeout(() => {
  help.ctrl.controls.push('ControlPrueba')
}, 500)

3./ Al consultar la ayuda desde el plugin Help mostrará la ayuda del control.

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

2. MAPA
2.1. Capas

 ■ 2.1.1. Fuentes
   • 2.1.1.1. Capas vectoriales
     + Vector
     + WFS
     + GeoJSON
     + KML
     + MVT
     + OGCAPIFeatures
     + MBTilesVector
     + GenericVector
     + MapLibre
   • 2.1.1.2. Capas ráster
     + WMS
     + WMC
     + WMTS
     + TMS
     + XYZ
     + OSM
     + MBTiles
     + GenericRaster
     + GeoTIFF
     + GeoPackageTile
   • 2.1.1.3. Capas 3D
     + Terreno
     + 3DTiles
       + info 3DTiles
   • 2.1.1.4. Capas rápidas
   • 2.1.1.5. Grupo de capas
   • 2.1.1.6. Secciones
   • 2.1.1.7. GeoPackage
   • 2.1.1.8. Capas externas

 ■ 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

  > Creación de plugin en cliente

  » Tutorial de creación de un plugin

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
 5.6. Parametrización API-REST plugins externos

6. PARAMETRIZACIÓN VISUALIZADORES

7. SOLUCIÓN DE PROBLEMAS

8. PROCESO DE VERSIONADO

9. GUÍA DE DESARROLLO
  > Guía para colaborar en el repositorio
  > Guía para el desarrollo de API-IDEE
  > Guía de test de API-IDEE
  » Tutorial desarrollo del núcleo de API-IDEE - (Cliente)
  > Guía de desarrollo de componentes
  » Tutorial desarrollo del núcleo de API-IDEE - (Servidor)
  > Guía de desarrollo de plugins
  » Tutorial desarrollo de plugins ya creados
  » Tutorial desarrollo de nuevos plugins
  > Guía de desarrollo de visualizadores con React

  > Compilación proyecto API-IDEE

Clone this wiki locally