-
Notifications
You must be signed in to change notification settings - Fork 15
Gestión de parámetros
Supongamos que nuestro plugin acepta en su método constructor uno o varios parámetros que necesita usar internamente, o en su vista/template. Por ejemplo, que muestre en un selector html una serie de escalas pasadas al plugin:
const myPlugin = new M.plugin.miplugin({
"escalas": [{
"valor": "1250000",
"numero": "1.000.000"
}, {
"valor": "1000000",
"numero": "800.000"
}, {
"valor": "625000",
"numero": "500.000"
}
});
Los parámetros que recibe están en formato json. En este caso, consiste en un array 'escalas' de tuplas 'valor/numero'. En el método constructor del plugin, necesitamos por tanto declarar este parámetro, que podremos guardar en el atributo correspondiente:
// facade/js/miplugin.js
constructor(params) {
super();
this.escalas_ = params.escalas;
});
addTo(map) {
// Pasamos el parametro al control
let miControl = new M.control.mipluginControl(this.escalas_);
...
// facade/js/mipluginControl.js
constructor(scales)
{
...
this.escalas_ = scales;
...
Y en el método createView del control, que es cuando se procesa el template, se le pueden pasar los parámetros a través de la propiedad vars, que son accedidos mediante notación Handlebars.
// facade/js/mipluginControl.js
createView(map) {
let this_ = this;
let promise = new Promise((success, fail) => {
M.template.compile('miplugin.html', {
'vars': {
'escalas': this_.escalas_
}
}).then(function(html) {
this_.addEvents(html);
success(html);
});
});
return promise;
}
💡 Estamos lanzando la compilación de la plantilla como Promise ya que queremos asociar eventos a la misma, y para ello debemos esperar a que esté compilada.
De esta manera, en la propia plantilla podremos acceder al parámetro tratándolo como el objeto json que es. En este caso, queremos que un selector html contenga una opción de selección 'option' por cada posible escala que ha recibido el constructor:
<!--template/miplugin.html-->
<div class="m-scaleSelector-container" id="miplugin-container">
<div>Escala = 1 :
<select id="SelectEscala" class="m-scaleSelector-select">
{{#each escalas}}
<option value="{{valor}}">{{numero}}</option>
{{/each}}
</select>
</div>
</div>
En la plantilla podemos usar semántica handlebars.
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