2017-01-20 3 views
0

Kennen einige Experten, wie die Opazität jeden tilemap eine Gruppe Schicht von ändern durch eine HTML-Slider Eingabe verwendet?Broschüre: Wie kann die Deckkraft von Layergruppen gesteuert werden?

Zum Beispiel: Ich habe mehrere Tilemaps, die mit Lealets Layercontrol-Button wie hier geschaltet werden können: Leaflet Layer Groups. Wenn ich den Opazitäts-Schieberegler verwende, möchte ich jede Tilemap abdunkeln, nicht nur eine ist eigentlich aktiv. Zum Beispiel: Ich dimme map1 auf 0.5 Dann wechseln zu map2, sollte seine Opazität bereits 0,5 sein. Und wenn Sie die Deckkraft von map2 mit dem Schieberegler auf 0.8 ändern und zurück zu map1 wechseln, sollte map1 bereits wieder die Opazität 0.8 haben (nicht den zuvor eingestellten Wert von 0.5)

Ich weiß, wie man den Schieberegler implementiert und wie man ihn ändert die Opazität von ein einzelner tilemap mit dem Befehl

nameOfMaplayer.setOpacity(opacityValue); 

Aber ich eine Idee nicht, wie mit Leaflet Methoden zum Pane/Grid Layer/Array aller tilemaps verweisen sich ändern die Deckkraft der Karte anstelle der Opazität der einzelnen Tilemaps simu lustvoll.

Antwort

1

denke ich, am Ende habe ich mir eine befriedigende Antwort gefunden:

Wenn wir die Undurchsichtigkeit des tilePane (= basemap-Schichten und overlaymap-Schichten) ändern wollen:

map.getPane('tilePane').style.opacity = 0.5; 

Aber diese hat den Nachteil, dass auch die Overlay-Tilemaps gedimmt werden, was ich vermeiden wollte.

Meine bevorzugte Methode ist nur die Opazität der aktiven Grundkarte-Ebene ändern. Da Leaflet unterstützt nicht die aktive Schicht basemap bekommen, werden Sie die „Activelayers“ -Plugin verwenden und seine Methoden verwenden:

ctrLayer = L.control.activeLayers(baseMaps, overlayMaps, {position: 'topright'}).addTo(map); 
..... 
tilemapLayer = ctrLayer.getActiveBaseLayer().layer; 
tilemapLayer.setOpacity(actualOpacityValue); 

Jedes Mal, wenn Sie die Basiskarte ändern, müssen Sie das ausführen später 2 Befehle, um die Opazität der neuen Grundkarte auf den tatsächlich verwendeten Deckkraftwert zu ändern.

Verwandte Themen