전단지 : removeLayer를 어떻게 사용합니까?


15

이것은 나를 화나게한다. 맵에 레이어 컨트롤을 추가하려면 Leaflet 튜토리얼을 참조하십시오.

L.Icon.Default.imagePath = "Scripts/images";

var mapUrl = 'http://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png';
var secondMap = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png';

var littleton = L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.'),
denver = L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.'),
aurora = L.marker([39.73, -104.8]).bindPopup('This is Aurora, CO.'),
golden = L.marker([39.77, -105.23]).bindPopup('This is Golden, CO.');

var cities = L.layerGroup([littleton, denver, aurora, golden]);

var grayscale = L.tileLayer(mapUrl, { id: mapUrl }),
streets = L.tileLayer(secondMap, { id: secondMap });

var map = L.map('map', {
    center: [39.73, -104.99],
    zoom: 10,
    layers: [grayscale, cities]
});

var baseMaps = {
    "Grayscale": grayscale,
    "Streets": streets
};

var overlayMaps = {
    "Cities": cities
};

L.control.layers(baseMaps, overlayMaps).addTo(map);

이제 removeLayer 함수를 사용하여 map.on ( 'click') 이벤트를 사용하여 컨트롤에서 "GrayScale"맵을 제거하려면 어떻게해야합니까? 코드는 다음과 같습니다.

map.on('click', function(){
    //remove GrayScale
});

사용자가 버튼으로 그레이 스케일을 제거 할 수 있도록 하시겠습니까? 아니면 다른 이벤트의 영향으로 동적으로 제거됩니까? 아니면 단순히 회색조 레이어없이지도를 시작 하시겠습니까?
hexamon

가장 쉬운 해결책을 말하자 : 이벤트에 대한 영향으로 동적. 예를 들어 map.on ( 'click', function () {})입니다. 그에 따라 게시물을 편집하겠습니다.
yesman

답변:


21

처음부터 회색조 맵을 제거하려면 삭제하십시오.

    "Grayscale": grayscale,

에서

var baseMaps = {
    "Grayscale": grayscale,
    "Streets": streets
};

클릭시 레이어를 제거하려면 맵 객체에서 메서드로 호출합니다. 이렇게 :

map.removeLayer(grayscale)

컨트롤에서 컨트롤을 제거하려면 먼저 컨트롤을 변수에 할당해야합니다. 이것을 변경하십시오 :

L.control.layers(baseMaps, overlayMaps).addTo(map);

이에:

lcontrol = L.control.layers(baseMaps, overlayMaps).addTo(map);

그런 다음 전화를 걸 수 있습니다.

lcontrol.removeLayer(grayscale) 

.. 컨트롤에서 제거하십시오.

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