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

28

Tengo una capa de marcador, dos capas vectoriales y dos capas ráster. La capa de marcador se cubre con las dos capas ráster.

¿Hay alguna forma de mover la capa de marcador siempre arriba?

Editado: El orden de los índices Z funciona bien en la capa vectorial, pero cuando agrego otra capa raster WMS en el mapa con un índice Z más bajo, la capa raster aún cubre el vector capa.

Editado: ¿Podría alguien señalar 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 Zindex se ocupa del orden de las características en una capa vectorial, ¿verdad?

    
pregunta Seen 01.10.2011 - 19:00

4 respuestas

24

La configuración del índice z para cada capa debería ayudar: enlace

EDITED

El ejemplo al que enlazé originalmente no es muy útil. Desea establecer el índice de índice de capa de las capas, no los creadores dentro de las capas (como se muestra en el ejemplo de ordenamiento). Preparé un ejemplo (basado en este example ) que muestra la indexación de capa personalizada. Observe que cuando enciende el ráster de Canadá, la capa de marcador permanece en la parte superior.

Aquí está el código relevante:

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 para el código setLayerIndex está aquí: enlace

    
respondido por el Casey 01.10.2011 - 19:20
8

Puedes hacerlo, si quieres que tu capa vectorial siempre esté en la parte superior simplemente con el código ...

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

¡Que sea fácil!

    
respondido por el Aragon 03.10.2011 - 10:43
4

ninguno de los anteriores funcionó para mí, pero simplemente haciendo esto cada vez que agrego una nueva capa funcionó a gusto para mantener mi capa de marcador en la parte superior:

myMarkerLayer.setZIndex (1001);

    
respondido por el ErichBSchulz 16.12.2013 - 03:46
3

Puede pensar en agregar una capa a un mapa o colocar una nueva hoja sobre las existentes. Si la nueva hoja no es transparente, ocultará todas las que se muestran a continuación.

Lamentablemente, OpenLayers no tiene un método insertLayerAt , por lo que tiene que reordenar sus capas después de la inserción. La solución es luego agregar la capa y luego moverla hacia abajo de la pila a la profundidad deseada o mover la que desea en la parte superior de nuevo a la parte superior.

Puedes 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);
    
respondido por el unicoletti 03.10.2011 - 12:24

Lea otras preguntas en las etiquetas