2015-11-03 6 views
0

J'ai trois calques, un GeoJSON qui est utilisé avec leaflet-draw et deux (vector et canvas/heatmap) qui affichent simplement des calques.Réorganiser les calques de feuillets

Mon problème est, les superpositions sont ajoutées plus tard dynamiquement avec le contrôle de couche, tandis que la couche GeoJSON est toujours là. Lorsque les superpositions sont ajoutées, certaines des fonctions de dessin et une interaction générale avec la couche GeoJSON fonctionnent, car mes superpositions sont toujours au-dessus.

Comment redonner la couche GeoJSON au premier plan?

L'utilisation de layer.bringToFront() ne fonctionnait pas.

Répondre

2

Si les couches sont ajoutées par le contrôle de la couche, vous pouvez garder votre couche GeoJSON sur le dessus en se cognant en arrière en utilisant .bringToFront() chaque fois qu'un événement overlayadd est tiré:

map.on('overlayadd', function() { 
    yourGeoJsonLayerName.bringToFront(); 
}); 

Un exemple un peu difficile à manier le violon est ici:

http://fiddle.jshell.net/nathansnider/yt65dkyt/

Bien que la commande de la couche peuvent être traitées avec plus de grâce à la notice 1.0 bêtas en attribuant des couches de vitres avec un zIndex persistant, il ressemble à Leaflet Draw ne supporte pas officiellement 1.0 encore, donc .bringToFront c'est!

+0

Cela semble ne pas fonctionner parce que j'ai des couches personnalisées. Je devrais regarder dans 'bringToFront()' pour que cela fonctionne, je suppose. Mais merci :) –

+1

Si des calques sont ajoutés par un autre moyen que le contrôle de calque, vous pouvez garder le calque dessiné sur le dessus en utilisant 'map.on ('layeradd' ...'.) – nathansnider

+0

Le problème n'est pas t obtenir les couches sur un add (contrôle ou autre) le problème est, que 'bringToFront()' n'apporte pas la couche au front –