Skip to content

Fichero js

gdtel-cnig-develop edited this page Jun 7, 2023 · 2 revisions

miplugin.js

En el fichero facade/js/miplugin.js el código comienza con la definición del módulo y la importación de las clases necesarias para el plugin, tras lo cual se comienza la construcción del mismo:

/**
 * @module M/plugin/Miplugin
 */
import MipluginControl from './miplugincontrol';
import 'assets/css/miplugin';

class Miplugin extends M.Plugin {
...

> Constructor
En este constructor lo primero será llamar al super(), para poder definir posteriormente los atributos internos:

constructor() {
    super();
     ...

Los atributos a definir dependerán de las necesidades funcionales. Por lo general, hay cuatro atributos que considerar:

  • El nombre del plugin.
  • El objeto mapa.
  • El panel del plugin, en caso de que vaya a tener y gestionarlo.
  • El o los controles que forman parte del plugin.

Así lo anterior quedaría:

constructor() {
   super();
   this.name = 'miPlugin';
   this.map_ = null;
   this.controls_ = [];
   this.panel_ = null;
}

> addTo
Será llamado una vez que se añada al mapa. Este es el método principal de un plugin ya que recibe como parámetro la instancia del mapa sobre el cual funcionará. Las acciones que podemos realizar en este método incluyen:

  • Asignación del objeto mapa.
  • Inicialización de posibles controles internos.
  • Inicialización del posible panel contenedor.

Por ejemplo, si nuestro plugin contiene un control, en este método será donde lo creemos y lo añadamos al mapa:

addTo(map) {
   // Inicializamos controles
   this.controls_.push(new M.control.miPluginControl());
   // Guardamos referencia al mapa contenedor
   this.map_ = map;
   // Añadimos los controles al mapa
   this.map_.addControls(this.controls_);
};

Si el plugin dispone de un Panel, al añadir el control al mismo, este lo añadirá a su vez al mapa, por lo que no tendremos que hacerlo explícitamente:

// Inicializamos panel contenedor
this.panel_ = new M.ui.Panel('mipanel', {
  "collapsible": false,
  "className": "m-map-info",
  "position": M.ui.position.TR
});
// Esto asigna a su vez el panel al control
this.panel_.addControls(this.controls_);
// Añadimos el panel que ya contiene los controles al mapa
this.map_.addPanels(this.panel_);

Es recomendable que después de añadir el plugin al mapa, se lance el evento M.evt.ADDED_TO_MAP. Cada plugin, en función de su lógica interna, deberá hacer unas u otras comprobaciones previas (¿están inicializados los controles internos? etc.).

> destroy
Este método será ejecutado cuando el plugin sea eliminado del mapa. Es decir, será en este método donde tendremos que deshacer los cambios que realizó dicho plugin. Por ejemplo, para el caso anterior, tendremos que eliminar el control personalizado del mapa:

destroy(map) {
   this.map_.removeControls(this.controls_);
   this.map_ = null;
};

> getControls
Dar acceso a los posibles controles internos desde fuera del plugin es opcional, el desarrollador deberá evaluar si es necesario o si facilita su uso.

getControls() {
    return this.controls_;
};

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
     + MapLibre
   • 2.1.1.2. Capas ráster
     + WMS
     + WMTS
     + TMS
     + XYZ
     + OSM
     + MBTiles
     + GenericRaster
     + GeoTIFF
   • 2.1.1.3. Capas rápidas
   • 2.1.1.4. Grupo de capas

 ■ 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

6. PARAMETRIZACIÓN VISUALIZADORES

7. SOLUCIÓN DE PROBLEMAS

8. PROCESO DE VERSIONADO

9. GUÍA DE DESARROLLO
  > Guía para el desarrollo de API-CNIG
  » Tutorial desarrollo del núcleo de API-CNIG - (Cliente)
  > Guía de desarrollo de componentes
  » Tutorial desarrollo del núcleo de API-CNIG - (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-CNIG

Clone this wiki locally