Próbuję pokazać różne warstwy GeoJSON na różnych warstwach powiększenia za pomocą interfejsu API Leaflet. Mogę ładować i wyświetlać wszystkie trzy warstwy jednocześnie (choć tak naprawdę nie chcę, aby wszystkie były wyświetlane jednocześnie). Mogę ładować i wyświetlać je przy różnych poziomach powiększenia.
Mam ustawiony kod, aby na poziomach powiększenia 1-6 mapa wyświetlała jedną warstwę GeoJSON. Na poziomach 7-10 pokaże inny, a na poziomach 11+ pokaże trzeci. Wyświetlanie ich działa. To, co próbuję teraz uruchomić, to wyłączenie innych, jeśli jeden jest wyświetlany. Przejście od 1-6 do 7-10 działa (co oznacza, że poprawnie wyłącza warstwę 1-6), ale nie od 7-10 do 11+ (co oznacza, że warstwa 7-10 przykleja się) i nie mogę zrozumieć dlaczego (używa tego samego kodu).
Oto ajax dla warstw 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);
});
}
A oto główna funkcja, która wywołuje ajax w zależności od powiększenia. simpCounter jest początkowo ustawiony na 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;
}
}
});
Więc ponownie, pierwsze przejście poprawnie wyłącza starą warstwę, ale drugie przejście nie. Dzięki za pomoc.