Odpowiedzi:
Ten samouczek stanowi dobry przykład:
1) Jak pokazano w przykładzie, skonfiguruj warstwy podstawowe o nazwie zmiennej, do której można uzyskać dostęp w funkcji, w której chcesz je przełączać programowo.
var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
streets = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});
2) Następnie dodaj i usuń warstwy, które chcesz dodać lub usunąć. Poniżej wymieniono grayscale
warstwę na streets
warstwę. Zakłada się, że zarówno grayscale
i streets
są dostępne w ramach funkcji gdzie robisz przełączanie.
map.removeLayer(grayscale);
map.addLayer(streets);
3) Jeśli używasz kontrolki warstw L.control.layers
pokazanej w przykładzie, wówczas kontrolka śledzi zawartość mapy i odpowiednio zmienia pola wyboru.
Od https://stackoverflow.com/a/33762133/4355695
Zwykle po prostu dodając warstwę do mapy (np. MyTileLayer.addTo (mapa)), jeśli ta warstwa jest częścią warstw podstawowych lub nakładek Kontrolki warstw, ta ostatnia automatycznie zaktualizuje swój status (jeśli dodałeś warstwę podstawową, przyciski opcji zostaną odpowiednio wybrane; w przypadku nakładki odpowiednie pole wyboru zostanie zaznaczone).
Próbowałem i zadziałało: nie muszę zawracać sobie głowy usunięciem bieżącej warstwy podstawowej (lub ustaleniem, który z nich jest aktywny). Po prostu myTileLayer.addTo(map)
wykonuje to zadanie: jeśli jest już częścią moich podstawek, mapa „przełącza się” na to. Automatycznie usuwa bieżącą warstwę i zmienia się na myTileLayer
.
mapboxUrl
&mapboxAttribution
?