답변:
이 튜토리얼 은 좋은 예입니다.
1) 예제와 같이 프로그래밍 방식으로 전환하려는 함수에서 액세스 할 수있는 변수 이름으로 기본 계층을 설정하십시오.
var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
streets = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});
2) 그런 다음 추가하거나 제거하려는 레이어를 추가하고 제거하십시오. 다음은 grayscale
레이어 의 레이어를 교체합니다 streets
. 이 모두 있다고 가정 grayscale
하고 streets
당신이 전환을하고있는 함수의 범위 내에서 사용할 수 있습니다.
map.removeLayer(grayscale);
map.addLayer(streets);
3) L.control.layers
예제에 표시된 레이어 컨트롤을 사용하는 경우 컨트롤은지도의 내용을 추적하고 그에 따라 확인란을 변경합니다.
에서 https://stackoverflow.com/a/33762133/4355695
일반적으로 맵에 레이어를 추가하기 만하면 (예 : myTileLayer.addTo (map)) 해당 레이어가 기본 레이어의 일부이거나 레이어 컨트롤의 오버레이 인 경우 후자는 자동으로 상태를 업데이트합니다 (기본 레이어를 추가 한 경우, 라디오 버튼이 그에 따라 선택됩니다. 오버레이의 경우 해당 확인란이 선택됩니다.
나는 노력했고 효과가 있었다 : 나는 현재의 baselayer를 제거하거나 그 문제에 대해 어느 것이 활성인지 알아낼 필요가 없다. 그냥 myTileLayer.addTo(map)
작업을 수행 : 그것은 이미 내 기본 계층의 일부인 경우,지도는 "바로 전환". 현재 레이어가 자동으로 제거되고로 변경됩니다 myTileLayer
.
mapboxUrl
&mapboxAttribution
?