WMC - Desarrollos-IDEE/API-IDEE GitHub Wiki

Importante: Está actualmente en desarrollo por lo que no es recomendable su uso.

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: https://componentes.idee.es/estaticos/Datos/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 = IDEE.map({
  container: 'map',
  projection: 'EPSG:25830*m',
  wmcfiles: ['https://componentes.idee.es/estaticos/Datos/WMC/context_cdau_callejero.xml*Mapa']
});

También puede añadirse mediante el método addWMC:

var miWmc = new IDEE.layer.WMC({
  url: 'https://componentes.idee.es/estaticos/Datos/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 primer ejemplo, 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.

Además, 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.

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 IDEE.evt.COMPLETED del mapa.

// wmc contiene la definicion de capas WMS
mapajs = IDEE.map({
  container: 'map',
  projection: 'EPSG:25830*m',
  wmcfiles: ['WMC*https://componentes.idee.es/estaticos/Datos/WMC/context_cdau_satelite.xml*Satelite']
});

console.log(mapajs.getLayers().length);
// 1: el wmc

mapajs.on(IDEE.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.

Secciones

Las capas definidas en un WMC pueden agruparse en secciones, en el apartado Secciones se describe cómo.