Suite

Comment définir l'ordre des calques dans Openlayers ?

Comment définir l'ordre des calques dans Openlayers ?


J'ai un calque de marqueur, deux calques vectoriels et deux calques raster. La couche de marqueur est recouverte par les deux couches raster.

Existe-t-il un moyen de déplacer le calque de marqueur toujours au-dessus?

Édité: L'ordre des index Z fonctionne bien dans la couche vectorielle, mais lorsque j'ajoute une autre couche raster WMS sur la carte avec un index Z inférieur, la couche raster couvre toujours la couche vectorielle.

Édité: Quelqu'un pourrait-il souligner la différence de l'ordre de rendu en termes de "LayerIndex" et "Z-Index" d'un calque? Je pense que l'index des couches traite de l'ordre de superposition et que le Zindex traite de l'ordre des caractéristiques dans une couche vectorielle, n'est-ce pas ?


La définition du z-index pour chaque couche devrait vous aider : http://www.openlayers.org/dev/examples/ordering.html

ÉDITÉ

L'exemple auquel j'ai initialement lié n'est pas très utile. Vous souhaitez définir le layerindex/z-index des calques, pas les créateurs au sein des calques (comme l'a montré l'exemple de commande). J'ai rassemblé un exemple (basé sur cet exemple) montrant l'indexation de calques personnalisée. Notez que lorsque vous activez le Raster Canada, le calque Marqueur reste au-dessus.

Voici le code correspondant :

map.setLayerIndex(dm_wms, 0); //définit la superposition d'image en bas map.setLayerIndex(markers, 99); //définit le calque de marqueur sur un indice de calque arbitrairement élevé

La documentation pour le code setLayerIndex est ici : http://dev.openlayers.org/releases/OpenLayers-2.11/doc/apidocs/files/OpenLayers/Map-js.html#OpenLayers.Map.setLayerIndex


Vous pouvez le faire, si vous voulez que votre couche vectorielle soit toujours supérieure avec simplement du code…

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

Que ce soit facile !


rien de ce qui précède n'a fonctionné pour moi, mais faire simplement ceci chaque fois que j'ajoute un nouveau calque a fonctionné un régal pour garder mon calque de marqueur au-dessus:

myMarkerLayer.setZIndex( 1001 );


Vous pouvez penser à ajouter une couche à la carte en posant une nouvelle feuille sur celles existantes. Si la nouvelle feuille n'est pas transparente, elle masquera toutes celles du dessous.

Malheureusement, OpenLayers n'a pas de insérerCoucheAt méthode, vous devez donc réorganiser vos calques après l'insertion. La solution consiste ensuite à ajouter le calque, puis à le déplacer vers le bas de la pile jusqu'à la profondeur souhaitée ou à déplacer celui que vous souhaitez en haut vers le haut.

Vous pouvez le faire comme suit :

// ajoutez votre wms comme d'habitude var yourWMSLayer = new… map.addLayer(yourWMSlayer); // vous pouvez le faire dans les deux sens : // 1. déplacez maintenant les marqueurs vers le haut de la pile var yourMarkers = map.getLayersByName("le nom du calque du marqueur")[0]; map.setLayerIndex(yourMarkers, map.layers.length-1); // 2. OU vous déplacez le WMS vers le bas // c'est plus succint map.setLayerIndex(yourWMSLayer, map.layers.length-2);

Voir la vidéo: QGIS Openlayers Plugin Not Showing? - Solved - 2019