Leaflet: คุณใช้ removeLayer อย่างไร


15

นี่ทำให้ฉันเป็นบ้า ดูบทช่วยสอนของแผ่นพับสำหรับเพิ่มการควบคุมเลเยอร์ในแผนที่ของคุณ:

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 เพื่อลบแผนที่ "GrayScale" ออกจากตัวควบคุมโดยใช้เหตุการณ์ map.on ('คลิก') ได้อย่างไร รหัสจะเป็น:

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

คุณต้องการให้ผู้ใช้สามารถลบปุ่มสีเทาด้วยปุ่มได้หรือไม่? หรือมันจะถูกลบออกแบบไดนามิกเป็นผลของเหตุการณ์อื่น ๆ ? หรือคุณเพียงต้องการให้แผนที่เริ่มโดยไม่มีเลเยอร์สีเทาเลย?
hexamon

สมมติว่าวิธีที่ง่ายที่สุด: มีผลต่อเหตุการณ์แบบไดนามิก ตัวอย่างเช่น map.on ('คลิก', ฟังก์ชัน () {}) ฉันจะแก้ไขโพสต์ของฉันตาม
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.