Leaflet: removeLayer'ı nasıl kullanıyorsunuz?


15

Bu beni delirtiyor. Haritanıza katman kontrolü eklemek için Broşür kılavuzuna bakı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);

Şimdi, map.on ('click') olayı kullanarak "GrayScale" haritasını denetimden kaldırmak için removeLayer işlevini nasıl kullanabilirim? Kod şöyle olacaktır:

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

Kullanıcının bir düğmeyle Gri Tonlamayı kaldırabilmesini istiyor musunuz? Veya başka bir etkinliğin etkisi olarak dinamik olarak kaldırılması için mi? Veya haritanın gri tonlama katmanı olmadan başlamasını mı istiyorsunuz?
hexamon

En kolay çözümü söyleyelim: bir etkinliğin etkisi olarak dinamik olarak. Örneğin, map.on ('tıklama', işlev () {}). Yazımı buna göre düzenleyeceğim.
yesman

Yanıtlar:


21

Gri tonlamalı haritayı en baştan kaldırmak istiyorsanız, silmeniz yeterlidir:

    "Grayscale": grayscale,

itibaren

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

Bir tıklamayla katmanı kaldırmak istiyorsanız, harita nesnesinde bir yöntem olarak adlandırırsınız. Şöyle ki:

map.removeLayer(grayscale)

Denetimden kaldırmak için önce denetimi bir değişkene atamanız gerekir. Bunu değiştir:

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

Buna:

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

Ardından şunları arayabilirsiniz:

lcontrol.removeLayer(grayscale) 

.. kontrolden çıkarmak için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.