LayerGroup - sigcorporativo-ja/Mapea4 GitHub Wiki

ℹ️ Requiere v5.1.0+ de Mapea ℹ️

Mapea contempla en su modelo de datos el concepto de Agrupación de Capas o Layer Group. Esta agrupación nace con el fin de facilitar la gestión de aquellas capas que, por cuestiones conceptuales u organizativas, deban alojarse dentro a un mismo contenedor, proporcionando una serie de métodos para su manipulación.

// Creación de un LayerGroup
let layerGroup1 = new M.layer.LayerGroup({
  id: 'id_grupo_1',
  title:  'Grupo 1',
  collapsed: true,
  zIndex: 100000,
  children: [provincias, campamentos, capaWMS],
  order: 0
 }
);

Donde:

  • id: Identificador interno de la agrupación.
  • title: Identidicador externo, que generalmente se muestra al usuario.
  • children: Array con las capas que se desea agrupar.
  • collapsed: opcional Booleano que indica si ante un posible TOC la agrupación debiera aparecer inicialmente plegada (true) o desplegada (false).
  • zIndex: opcional Zindex de la agrupación. Las capas internas parten de este valor.
  • order: opcional Orden de la agrupación en un posible TOC.

Ejemplo funcional en JSFiddle

Un LayerGroup puede contener y combinar capas WMS y vectoriales, tal y como puede comprobarse en el ejemplo funcional anterior.

El control Layerswitcher de Mapea, que añade un TOC al mapa, contempla en su interfaz la existencia de posibles agrupaciones, y permite gestionar las visibilidades de las capas agrupadas de manera individual o por agrupación. Sin embargo, es importante destacar que la existencia de LayerGroup atiende a escenarios que van más allá de la mera organización visual de las capas en un TOC, por lo que desde el api se proporcionan también los siguentes métodos para trabajar con ellas:

// El metodo getLayers del mapa sigue devolviendo únicamente Capas:
let todasLasCapas =  mapajs.getLayers();

// Obtener un array con las agrupaciones:
let agrupaciones = mapajs.getLayerGroup();

// Obtener un aray con los elementos de una agrupación:
let hijos = lyGroup.getChildren();

// Sacar un elemento de la agrupación
lyGroup.ungroup(provincias);

// Activar o desactivar todas los elementos de la agrupación a la vez
lyGroup.setVisible(false);

Los métodos addChild, addChildren, deleteChild y deleteChildren permiten gestionar los hijos o capas de una agrupación.

ℹ️ Requiere v5.2.0+ de Mapea ℹ️

A partir de la v5.2.0 de Mapea, es posible definir grupos de capas WMS dentro de los contextos de mapas WMC.

<General>
   ...
     <Extension>
          ...
          <ol:group xmlns:ol="http://openlayers.org/context" id="nivel0" title="Layers" orderInsideGroupDisplay="0">
	     <ol:group id="GROUP_363" title="Divisones" orderInsideGroupDisplay="1" />
	     <ol:group id="GROUP_364" title="Infraestructuras" orderInsideGroupDisplay="0" />
          </ol:group>
     </Extension>		
   ...
 </General>
 <LayerList>
     <Layer hidden="0" queryable="1">
	...
        <Extension>
	   ...
	   <ol:groupDisplayLayerSwitcher xmlns:ol="http://openlayers.org/context">GROUP_364</ol:groupDisplayLayerSwitcher>
	   <ol:orderInsideGroupDisplayLayerSwitcher xmlns:ol="http://openlayers.org/context">1</ol:orderInsideGroupDisplayLayerSwitcher>
        </Extension>
	...
     </Layer>
 </LayerList>

Documentación API: M.layer.LayerGroup

⚠️ **GitHub.com Fallback** ⚠️