Tờ rơi: Làm thế nào để bạn sử dụng removeLayer?


13

Điều này đang khiến tôi phát điên. Xem hướng dẫn của Tờ rơi để thêm điều khiển lớp vào bản đồ của bạn:

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);

Bây giờ, làm cách nào để sử dụng chức năng removeLayer để xóa bản đồ "GrayScale" khỏi điều khiển bằng sự kiện map.on ('click')? Mã sẽ là:

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

Bạn có muốn người dùng có thể loại bỏ Grayscale bằng một nút không? Hoặc cho nó để được loại bỏ linh hoạt như là một hiệu ứng của một số sự kiện khác? Hay bạn chỉ đơn giản muốn bản đồ bắt đầu mà không có lớp thang độ xám nào cả?
hexamon

Hãy nói giải pháp đơn giản nhất: năng động như một hiệu ứng cho một sự kiện. Ví dụ: map.on ('click', function () {}). Tôi sẽ chỉnh sửa bài viết của tôi cho phù hợp.
yesman

Câu trả lời:


20

Nếu bạn muốn xóa bản đồ thang độ xám từ đầu, chỉ cần xóa:

    "Grayscale": grayscale,

Từ

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

Nếu bạn muốn loại bỏ lớp trên một nhấp chuột, bạn gọi nó là một phương thức trên đối tượng bản đồ. Thích như vậy:

map.removeLayer(grayscale)

Để loại bỏ nó khỏi điều khiển, trước tiên bạn phải gán điều khiển cho một biến. Thay đổi cai nay đi:

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

Về điều này:

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

Sau đó, bạn có thể gọi:

lcontrol.removeLayer(grayscale) 

.. để loại bỏ nó khỏi sự kiểm soát.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.