Mam wiele warstw podstawowych i muszę je przełączać programowo, w zależności od różnych działań i stanów w mojej aplikacji. Nie mogę znaleźć jak dla mojego życia.
12
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.
mapboxUrl
&mapboxAttribution
?Od https://stackoverflow.com/a/33762133/4355695
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ę namyTileLayer
.źródło