So wechseln Sie die Basisebene programmgesteuert in MapBox / Leaflet

12

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.

kgeo
quelle

Antworten:

16

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 grayscaleEbene gegen die streetsEbene ausgetauscht. Dies setzt voraus, dass beide grayscaleund streetsim 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.layersim Beispiel gezeigte Ebenensteuerelement verwenden, verfolgt das Steuerelement, was sich auf der Karte befindet, und ändert die Kontrollkästchen entsprechend.

Toms
quelle
Wo ist mapboxUrl& mapboxAttribution?
Mohammad Dayyan
@MohammadDayyan Sie müssen sich auf das Tutorial beziehen, das oben verlinkt ist
Toms
0

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.

Nikhil VJ
quelle