MapBox / Leaflet에서 프로그래밍 방식으로 기본 레이어를 전환하는 방법


12

여러 기본 계층이 있으며 응용 프로그램의 다양한 작업 및 상태에 따라 프로그래밍 방식으로 전환해야합니다. 내 인생에 대한 방법을 찾을 수 없습니다.

답변:


16

이 튜토리얼 은 좋은 예입니다.

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예제에 표시된 레이어 컨트롤을 사용하는 경우 컨트롤은지도의 내용을 추적하고 그에 따라 확인란을 변경합니다.


여기는 mapboxUrl& mapboxAttribution?
모하마드 Dayyan

@MohammadDayyan 당신은 위에 링크 된 자습서를 참조해야합니다
toms

0

에서 https://stackoverflow.com/a/33762133/4355695

일반적으로 맵에 레이어를 추가하기 만하면 (예 : myTileLayer.addTo (map)) 해당 레이어가 기본 레이어의 일부이거나 레이어 컨트롤의 오버레이 인 경우 후자는 자동으로 상태를 업데이트합니다 (기본 레이어를 추가 한 경우, 라디오 버튼이 그에 따라 선택됩니다. 오버레이의 경우 해당 확인란이 선택됩니다.

나는 노력했고 효과가 있었다 : 나는 현재의 baselayer를 제거하거나 그 문제에 대해 어느 것이 활성인지 알아낼 필요가 없다. 그냥 myTileLayer.addTo(map)작업을 수행 : 그것은 이미 내 기본 계층의 일부인 경우,지도는 "바로 전환". 현재 레이어가 자동으로 제거되고로 변경됩니다 myTileLayer.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.