WMC - sigcorporativo-ja/Mapea4 GitHub Wiki
WMC (Web Map Context, o Web View Context) es un estándar de definición de mapas OGC. Trabajar con capas WMS independientes puede ser suficiente en muchos casos, pero si manejamos un número elevado de las mismas, o si queremos personalizar comportamientos tales como activación/desactivación de visibilidad por escala o personalización de la leyenda, es conveniente agruparlas en un único contexto de mapas.
El siguiente es un wmc que incluye diversas capas: http://www.callejerodeandalucia.es/wmc/context_cdau_callejero.xml
Para construir un mapa a partir de uno o varios wmc, basta con indicar al constructor su url, y un nombre o alias para cada uno. El único requisito es que dichas url sean públicas:
mapajs = M.map({
container: 'map',
controls: ['layerswitcher'],
wmcfiles: ['http://www.callejerodeandalucia.es/wmc/context_cdau_callejero.xml*Mapa']
});
:bulb: Este ejemplo tiene el control de leyenda! permite activar/desactivar las capas, y muestra la imagen de la leyenda que cada una tenga asociada. Consulta la sección de Controles para saber más.
También puede añadirse mediante el método addWMC:
var miWmc = new M.layer.WMC({
url: 'http://www.callejerodeandalucia.es/wmc/context_cdau_satelite.xml',
name: 'Satélite'
});
mapajs.addWMC(miWmc);
Donde:
- url: Url de acceso al fichero.
- name: Nombre que se mostrará en el selector de contextos de mapa.
Personalización de capas
En el ejemplo funcional del jsfiddle aterior, si navegamos por el mapa y nos vamos acercando, podremos ver como hay capas que aparecen/desaparecen según la escala, como es el caso de las calles y los portales, que no tienen sentido mostrar en escalas pequeñas. Esto es posible como comentábamos gracias al uso de maxScaleDenominator y minScaleDenominator dentro del wmc.
Como se ve también en el ejemplo anterior, si en un mapa se añade más de un contexto, aparece un selector de contextos con el que el usuario puede seleccionar el que desea activar en cada momento.
Contextos predefinidos en Mapea
Mapea incluye como contextos predefinidos los tres contextos creados para el Callejero Digital de Andalucía Unificado. Para usarlos, basta con indicar su nombre, no es necesario conocer las urls de los mismos:
Mapea v5+:
- Callejero Digital de Andalucía Unificado : "mapa"
- Satélite (Ortofoto): "satelite"
- Híbrido: "hibrido"
Mapea v4:
- Callejero Digital de Andalucía Unificado : "cdau"
- Satélite (Ortofoto): "cdau_satelite"
- Híbrido: "cdau_hibrido"
var mapajs = M.map({
container:'map',
wmcfiles:['mapa','satelite','hibrido'],
});
Capas definidas en el wmc y el objeto mapa
Las capas WMC, al ser en realidad una agrupación de capas, tienen un comportamiento especial respecto al mapa: cuando se añade una capa WMC, se activa un proceso que genera, una a una, las capas que incluye dicho WMC, que podrán ser gestionadas individualmente.
Este proceso de generación de las capas internas es asíncrono, lo que significa que las capas internas no estarán disponibles hasta que se lance el evento M.evt.COMPLETED del mapa.
// satelite contiene la definicion de capas WMS
mapajs = M.map({
container: 'map',
controls: ['layerswitcher'],
wmcfiles: ['satelite']
});
console.log(mapajs.getLayers().length);
// 1: el wmc
mapajs.on(M.evt.COMPLETED, function(evt) {
console.log(mapajs.getLayers().length);
// las demás
});
Otras capas
Un mapa puede combinar wmc y capas (WMS, WFS, etc.) tanto como quiera. Al cambiar de contexto, seguirán respetándose las capas que se han añadido externamente al mismo.
Grupos de capas
Las capas definidas en un WMC pueden agruparse en grupos, en la sección Grupos de Capas se describe cómo.
doc API: M.layer.WMC