Antworten:
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.
Von /programming//a/33762133/4355695
Normalerweise wird durch einfaches Hinzufügen einer Ebene zur Karte (z. B. myTileLayer.addTo (Karte)), wenn diese Ebene Teil der Basisebenen oder Überlagerungen des Ebenensteuerelements ist, dessen Status automatisch aktualisiert (wenn Sie eine Basisebene hinzugefügt haben, Die Optionsfelder werden entsprechend ausgewählt. Für eine Überlagerung wird das entsprechende Kontrollkästchen aktiviert.
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ändert myTileLayer
.
mapboxUrl
&mapboxAttribution
?