Leaflet API kullanarak farklı yakınlaştırma katmanlarında farklı GeoJSON katmanlarını göstermeye çalışıyorum. Üç tabakanın tümünü aynı anda yükleyebilir ve görüntüleyebilirim (aslında hepsinin aynı anda gösterilmesini istemiyorum). Onları farklı yakınlaştırma seviyelerinde yükleyebilir ve görüntüleyebilirim.
Kod ayarlarım var, böylece 1-6 Zoom seviyelerinde harita bir GeoJSON katmanı gösterecek. 7-10 seviyelerinde, başka bir şey gösterecek ve 11+ seviyelerinde, üçte birini gösterecektir. Onları göstermek çalışır. Şimdi çalışmaya çalışıyorum, eğer biri görüntülenirse diğerlerini kapatmak. 1-6'dan 7-10'a kadar çalışmak (1-6 katmanını doğru şekilde kapatması anlamına gelir); nedenini (aynı kodu kullanır).
GeoJSON katmanları için ajax:
function getJson(defaultStyle, map, simp, geojsonLayer){
var url = 'file' + simp + '.json';
map.removeLayer(geojsonLayer);
geojsonLayer.clearLayers();
$.getJSON(url, function(data){
geojsonLayer = L.geoJson(data, {
style: defaultStyle,
onEachFeature: onEachFeature
});
geojsonLayer.addTo(map);
});
}
Ve işte yakınlaştırmaya bağlı olarak ajax'ı çağıran ana işlev. simpCounter başlangıçta 0 olarak ayarlanmıştır.
map.on('zoomend', function(e) {
if (map.getZoom() >= 7 && map.getZoom() <= 10) {
if (simpCounter == 0 || simpCounter == 2) {
getJson(defaultStyle, map, 60, geojsonLayer);
simpCounter = 1;
}
} else if (map.getZoom() >= 11) {
if (simpCounter == 0 || simpCounter == 1) {
getJson(defaultStyle, map, 35, geojsonLayer);
simpCounter = 2;
}
}
});
Bu yüzden yine, ilk geçiş eski katmanı doğru şekilde kapatır, ancak ikinci geçiş yapmaz. Yardım için teşekkürler.