-
Notifications
You must be signed in to change notification settings - Fork 15
Fichero js Control
Al igual que hicimos con el plugin, en el fichero facade/js/mipluginControl.js definimos el módulo e importamos las clases necesarias para el control del plugin, tras lo cual se comienza con la construcción del mismo:
/**
* @module M/control/MipluginControl
*/
import MipluginImplControl from 'impl/miplugincontrol';
import template from 'templates/miplugincontrol';
export class mipluginControl extends M.Control {
...
> Constructor
En este constructor realizaremos normalmente los siguientes pasos:
constructor() {
/*
Comprobamos que la implementación usada del mapa tiene disponible
el control que estamos creando
*/
if (M.utils.isUndefined(M.impl.control.miPluginControl)) {
M.exception('La implementación usada no crea controles miPluginControl');
}
// Instanciamos la implementación del control
let impl = new M.impl.control.miPluginControl();
super(impl, "miplugin");
// Declaramos cualquier atributo interno
this.attr1 = ...
...
}
> createView
Con este método generamos la vista del control, que además es parámetro de salida. Puede implementarse de dos formas:
- La forma recomendada es haciendo uso de templates de handlebars. Creamos un template en la carpeta templates del plugin y devolvemos la compilación de dicha plantilla, la cual hemos importado al inicio del fichero. Usamos el método M.template.compileSync puesto que no tenemos que realizar una petición para obtenerla y el proceso será síncrono:
createView(map) {
return new Promise((success, fail) => {
const html = M.template.compileSync(template);
// Añadir código dependiente del DOM
success(html);
});
}
También podría construirse directamente el HTML creándolo con javascript mediante la API DOM del navegador, por lo que no importaríamos la plantilla y devolveríamos este HTML creado. Por ejemplo:
createView(map) {
return new Promise((success, fail) => {
let ctrlDiv = document.createElement('div');
ctrolDiv.className = 'mi-control-plugin';
success(ctrlDiv);
});
}
- Externalizar el template indicando una url, para que lo busque ahí. Usamos el método M.template.compile ya que tenemos que realizar una petición para obtener la plantilla y el proceso será asíncrono.
createView(map) {
return M.template.compile('[http://url/]miplugin.html',{
'jsonp':true
});
}
Hay que tener en cuenta dos cosas:
- Puede que haya que pasar parámetros a la interfaz. Esto se hace tal como se explica en la sección: gestión de parámetros.
- La vista del control deba tener eventos asociados cuando se interactúa con ella. Para saber más sobre cómo gestionarlos: gestión de eventos.
Otro aspecto importante de este método es que recibe como parámetro de entrada el mapa al que pertenecerá. En caso de que nuestro control necesite acceder al mismo y sus características, podemos inicializar una variable interna para que haga referencia a dicho mapa, y así esté disponible desde cualquier punto del control en su fachada:
createView(map) {
this.facadeMap_ = map;
...
}
otraFuncion(){
let nivelZoom = this.facadeMap_.getZoom();
...
}
> getActivationButton
Este método devuelve el elemento HTML que representará el botón que activará y desactivará el control. Recibe el HTML generado por createView. En nuestro ejemplo, es un botón con id “m-miplugincontrol-button”:
getActivationButton(html) {
return html.querySelector('button#m-miplugincontrol-button');
}
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