Yanıtlar:
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 grayscale
katman için streets
katmanı değiştirir. Bu, hem grayscale
ve hem streets
de 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.
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
.
mapboxUrl
&mapboxAttribution
?