Ich habe mehrere Basisebenen und muss diese programmgesteuert wechseln, abhängig von verschiedenen Aktionen und Status in meiner Anwendung. Kann nicht finden, wie, für das Leben von mir.
12
Dieses Tutorial dient als gutes Beispiel:
1) Richten Sie Ihre Basisebenen wie im Beispiel gezeigt mit einem Variablennamen ein, auf den in der Funktion zugegriffen werden kann, in der Sie sie programmgesteuert wechseln möchten.
var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
streets = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});
2) Fügen Sie dann die Ebenen hinzu und entfernen Sie sie, die Sie hinzufügen oder entfernen möchten. Im Folgenden wird die grayscale
Ebene gegen die streets
Ebene ausgetauscht. Dies setzt voraus, dass beide grayscale
und streets
im Rahmen der Funktion verfügbar sind, in der Sie die Umschaltung durchführen.
map.removeLayer(grayscale);
map.addLayer(streets);
3) Wenn Sie das L.control.layers
im Beispiel gezeigte Ebenensteuerelement verwenden, verfolgt das Steuerelement, was sich auf der Karte befindet, und ändert die Kontrollkästchen entsprechend.
mapboxUrl
&mapboxAttribution
?Von /programming//a/33762133/4355695
Ich habe es versucht und es hat funktioniert: Ich muss mich nicht darum kümmern, die aktuelle Basisschicht zu entfernen (oder herauszufinden, welche für diese Angelegenheit aktiv ist).
myTileLayer.addTo(map)
Macht einfach den Job: Wenn es bereits Teil meiner Basisschichten ist, "wechselt" die Karte dorthin. Die aktuelle Ebene wird automatisch entfernt und in geändertmyTileLayer
.quelle