Wie ändere ich die Reihenfolge der Ebenen in den Leaflet Map-Fenstern (Z-Index)?

16

Leaflet behauptet, dass die Elemente des Kartenfensters alle der Karte hinzugefügten Ebenen enthalten. Der Unterschied zwischen vielen Kartenfenstern ist ausschließlich die Z-Index-Reihenfolge der Ebenen.

Ich möchte eine Kombination von lvector.CartoDB-Layern, die im Wesentlichen overlayPaneLayer sind, mit TileLayer wie GeoIQ Acetate-bg und Labels verwenden.

Dies ist die Reihenfolge der Elemente, wenn sie der Karte hinzugefügt werden:

tileLayer1 = new L.TileLayer();
map.add(tileLayer1);  // add first layer to map

cartoDBLayer1 = new lvector.CartoDB();
cartoDBLayer.setMap(map); // add second layer to map

tileLayer2 = new L.TileLayer();
map.add(tileLayer2);  // add third layer to map

Was zurückkommt, ist eine Karte mit Layern in dieser Reihenfolge:

tileLayer1,tileLayer2,cartoDBLayer1

tileLayer1und tileLayer2befinden sich in HTMLElement: TilePaneund cartoDBLayer1in HTMLElement: overlayPane.

Gibt es eine Möglichkeit, cartoDBLayer1das Rendern im TilePane zu erzwingen , sodass es in der Reihenfolge des Z-Index abfällt, in der es der Karte in ...

dh

z-index[0]:tileLayer1
z-index[1]:cartoDBLayer1
z-index[2]:tileLayer2 
Michael Markieta
quelle

Antworten:

17

Haben Sie gesehen, dass diese Ausgabe eines der LeafLet Github-Repos erstellt hat:

https://github.com/Leaflet/Leaflet/issues/167

versuchen zu benutzen

 addLayer(layer,true);

um unten eine Kachelebene hinzuzufügen. Ich fürchte, das ist alles, was es gibt, und dieses zweite optionale Argument ist nicht einmal dokumentiert.

Update September 2014

Leaflet unterstützt jetzt das Setzen des zIndex . Vielen Dank an @knutole in den Kommentaren für die Mitteilung.

unicoletti
quelle
1
+1 für die Erwähnung eines undokumentierten Merkmals und damit für die Dokumentation. :)
fgysin wieder Monica
7
Es ist jetzt eine layer.setZIndex(zIndex)Funktion verfügbar.
Knutole
5
Danke - layer.setZIndex(99)scheint bei mir nicht mit Vektorsymbologie (Linien- und Polygon-Features) zu funktionieren, aber mit layer.bringToFront()hat es geklappt.
nichts ist