-
Notifications
You must be signed in to change notification settings - Fork 15
impl js mipluginControl.js
Una vez definida la fachada del plugin, hay que desarrollar las distintas implementaciones que se deseen: ol, leaflet, etc. Recordemos que la fachada recogía la lógica no dependiente de la librería de mapas, que se usaba exclusivamente en la implementación.
> Constructor
Provee la implementación como dependencia al igual que ocurría para la fachada, instancia la implementación del control, y llama al constructor padre de M.impl.Control:
/**
* @module M/impl/control/MipluginControl
*/
export class MipluginControl extends M.impl.Control {
constructor() {
super();
}
> addTo
Define la forma de añadir el control con la implementación que estamos usando. Este método recibe el mapa y el html del control que habíamos definido previamente en el createView de la fachada del control.
Por ejemplo, si la implementación usada es OpenLayers, inciamos el control con OL y lo añadimos al mapa con su método específico:
addTo(map, html) {
this.facadeMap_ = map;
ol.control.Control.call(this, {
'element': element,
'target': null
});
map.getMapImpl().addControl(this);
};
La clase padre M.impl.Control del que hereda nuestro control M.impl.control.MiControl ya realiza estos últimos pasos, por lo que podemos ahorrarnos código llamando al método addTo del padre mediante:
addTo(map, html) {
super.addTo(map, html);
};
> activate, deactivate
Si queremos realizar acciones concretas sobre el mapa cuando el control se active o desactive tendremos que implementar los métodos activate y deactivate del control respectivamente:
// Ocurre al activar el botón
activate() {
M.dialog.info('Hello World!');
};
// Ocurre al desactivar el botón
deactivate() {
M.dialog.info('Bye World!');
};
> destroy
Este método será ejecutado cuando el control del plugin sea eliminado del mapa. Es decir, será en este método donde tendremos que deshacer los cambios que se realizaron en la parte de la implementación del control del plugin. Por ejemplo, los eventos establecidos al mapa.
destroy() {
this.layer_ = null;
this.modifiedFeatures = [];
this.facadeMap_.getMapImpl().removeControl(this);
}
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.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.4. Paneles
» Creación de panel desde cero sin controles
» Tutorial Panel de un único control
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
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