Я намагаюся показувати різні шари GeoJSON на різних шарах збільшення за допомогою API Leaflet. Я можу завантажувати та показувати всі три шари одночасно (хоча я насправді не хочу, щоб вони відображалися одразу). Я можу завантажувати та показувати їх на різних рівнях збільшення.
У мене встановлений код, щоб на рівнях масштабування 1-6 на карті відображався один шар GeoJSON. На рівнях 7-10 він покаже інший, а на рівнях 11+ - третій. Показ їх працює. Те, що я намагаюся зараз працювати, - це вимкнення інших, якщо один відображається. Перехід від 1-6 до 7-10 працює (це означає, що він вимикає шари 1-6 правильно), але не від 7-10 до 11+ (це означає, що шар 7-10 тримається навколо), і я не можу зрозуміти чому (він використовує той самий код).
Ось аякс для шарів GeoJSON:
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);
});
}
І ось основна функція, яка викликає аякс залежно від масштабування. simpCounter встановлюється спочатку 0.
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;
}
}
});
Отже, перший перехід вимикає старий шар правильно, але другий перехід не робить. Дякую за допомогу.