Я пытаюсь показать разные слои GeoJSON с разными масштабными слоями, используя Leaflet API. Я могу загрузить и отобразить все три слоя одновременно (хотя на самом деле я не хочу, чтобы все они отображались одновременно). Я могу загрузить и отобразить их на разных уровнях масштабирования.
У меня есть код, настроенный таким образом, чтобы на уровнях масштабирования 1-6 на карте отображался один слой GeoJSON. На уровнях 7-10, он покажет другой, а на уровнях 11+ он покажет третий. Отображение их работает. То, что я пытаюсь заставить работать сейчас, это отключение других, если они отображаются. Переход с 1-6 до 7-10 работает (это означает, что он корректно отключает слой 1-6), но не с 7-10 до 11+ (что означает, что слой 7-10 остается на месте), и я не могу понять почему (он использует тот же код).
Вот ajax для слоев 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);
});
}
А вот и основная функция, которая вызывает ajax в зависимости от масштаба. 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;
}
}
});
Итак, еще раз, первый переход корректно отключает старый слой, а второй переход - нет. Спасибо за помощь.