31 votos

¿Cómo definir el orden de las capas en Openlayers?

Tengo una capa de marcador, dos capas vectoriales y dos capas de trama. La capa de marcador queda cubierta por las dos capas de trama.

¿Existe una forma de mover la capa del marcador siempre en la parte superior?

Editado: El orden de los índices Z funciona bien en la capa vectorial, pero cuando añado otra capa rasterizada WMS en el mapa con un índice Z inferior, la capa rasterizada sigue cubriendo la capa vectorial.

Editado: ¿Podría alguien indicar la diferencia del orden de representación en términos de "LayerIndex" y "Z-Index" de una capa? Creo que el índice de capa se ocupa del orden de superposición y el Zindex se ocupa del orden de las características en una capa vectorial, ¿estoy en lo cierto?

25voto

buti-oxa Puntos 6428

Ajustar el índice z de cada capa debería ayudar: http://www.openlayers.org/dev/examples/ordering.html

EDITADO

El ejemplo que enlacé originalmente no es muy útil. Usted quiere establecer el layerindex/z-index de las capas, no los creadores dentro de las capas (como el ejemplo de ordenación mostró). He creado un ejemplo (basado en este ejemplo ) que muestra la indexación personalizada de las capas. Observe que cuando se activa la trama de Canadá, la capa del marcador se mantiene en la parte superior.

Aquí está el código correspondiente:

map.setLayerIndex(dm_wms, 0); //set the image overlay to the bottom
map.setLayerIndex(markers, 99); //set the marker layer to an arbitrarily high layer index

La documentación del código setLayerIndex está aquí: http://dev.openlayers.org/releases/OpenLayers-2.11/doc/apidocs/files/OpenLayers/Map-js.html#OpenLayers.Map.setLayerIndex

9voto

texai Puntos 178

Puedes hacerlo, si quieres que tu capa vectorial esté siempre arriba con un simple código...

var vecLyr = map.getLayersByName('VectorLayer')[0];
map.raiseLayer(vecLyr, map.layers.length);

¡Que sea fácil!

6voto

pilcrow Puntos 128

Nada de lo anterior me ha funcionado, pero simplemente hacer esto cada vez que añado una nueva capa ha funcionado de maravilla para mantener mi capa de marcadores en la parte superior:

myMarkerLayer.setZIndex( 1001 );

3voto

Celso Puntos 66

Se puede pensar que añadir una capa al mapa es como poner una nueva hoja encima de las existentes. Si la nueva hoja no es transparente, ocultará todas las que estén por debajo.

Lamentablemente, OpenLayers no dispone de un insertLayerAt por lo que hay que reordenar las capas después de la inserción. La solución es entonces añadir la capa y luego moverla hacia abajo en la pila hasta la profundidad deseada o mover la que quiere en la parte superior de nuevo a la parte superior.

Puede hacerlo de la siguiente manera:

// add your wms as usual
var yourWMSLayer = new ....
map.addLayer(yourWMSlayer);

// you can do it both ways:
// 1. now move the markers to the top of the stack
var yourMarkers = map.getLayersByName("the marker layer name")[0];
map.setLayerIndex(yourMarkers, map.layers.length-1);

// 2. OR you move the WMS down
// this is more succint
map.setLayerIndex(yourWMSLayer, map.layers.length-2);

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X