Temel katmanı MapBox / Leaflet'te programlı olarak değiştirme


12

Birden fazla temel katmanım var ve bunları uygulamamdaki çeşitli eylemlere ve durumlara bağlı olarak programlı olarak değiştirmem gerekiyor. Nasıl olduğunu bulamıyorum, benim hayatım için.

Yanıtlar:


16

Bu eğitim iyi bir örnek teşkil eder:

1) Örnekte gösterildiği gibi, temel katmanlarınızı, programlı olarak değiştirmek istediğiniz işlevde erişilebilen bir değişken adıyla ayarlayın.

var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
    streets   = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});

2) Ardından eklemek veya çıkarmak istediğiniz katmanları ekleyin ve kaldırın. Aşağıdakiler grayscalekatman için streetskatmanı değiştirir. Bu, hem grayscaleve hem streetsde anahtarlamayı yaptığınız işlev kapsamında kullanılabilir olduğunu varsayar .

map.removeLayer(grayscale);
map.addLayer(streets);

3) L.control.layersÖrnekte gösterilen katmanlar kontrolünü kullanıyorsanız, kontrol harita üzerinde ne olduğunu takip eder ve onay kutularını uygun şekilde değiştirir.


Nerede mapboxUrl& mapboxAttribution?
Mohammad Dayyan

Yukarıda bağlı olan öğretici başvurmak gerekir @MohammadDayyan
toms

0

Gönderen https://stackoverflow.com/a/33762133/4355695

Normalde, haritaya yalnızca bir katman ekleyerek (örn. MyTileLayer.addTo (harita)), bu katman temel katmanların veya Katmanlar Denetiminin katmanlarının bir parçasıysa, ikincisi durumunu otomatik olarak günceller (bir temel katman eklediyseniz, radyo düğmeleri buna göre seçilecektir; yer paylaşımı için ilgili onay kutusu işaretlenecektir).

Denedim ve işe yaradı: Mevcut taban katmanını (ya da bu konuda hangisinin aktif olduğunu bulmakla) uğraşmak zorunda değilim. Sadece myTileLayer.addTo(map)iş yapar: Eğer zaten benim taban katmanlarımın bir parçasıysa, harita ona "geçer". Geçerli katmanı otomatik olarak kaldırır ve olarak değişir myTileLayer.

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.