Sto cercando di mostrare diversi livelli GeoJSON a diversi livelli di zoom utilizzando l'API Leaflet. Posso caricare e visualizzare tutti e tre i livelli contemporaneamente (anche se in realtà non li voglio mostrare tutti contemporaneamente). Posso caricarli e visualizzarli a diversi livelli di zoom.
Ho impostato il codice in modo che ai livelli di zoom 1-6, la mappa mostrerà un livello GeoJSON. Ai livelli 7-10, ne mostrerà un altro, e ai livelli 11+ ne mostrerà un terzo. Visualizzarli funziona. Quello che sto cercando di far funzionare ora è spegnere gli altri se ne viene visualizzato uno. Passare da 1-6 a 7-10 funziona (il che significa che disattiva correttamente il livello 1-6), ma non da 7-10 a 11+ (il che significa che il livello 7-10 rimane in giro) e non riesco a capire perché (usa lo stesso codice).
Ecco l'ajax per i layer 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);
});
}
Ed ecco la funzione principale che chiama ajax a seconda dello zoom. inizialmente simpCounter è impostato su 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;
}
}
});
Quindi, di nuovo, la prima transizione disattiva correttamente il vecchio livello, mentre la seconda transizione no. Grazie per l'aiuto.