Ich versuche, mithilfe der Leaflet-API verschiedene GeoJSON-Ebenen in verschiedenen Zoomebenen anzuzeigen. Ich kann alle drei Ebenen gleichzeitig laden und anzeigen (obwohl ich eigentlich nicht möchte, dass sie alle gleichzeitig angezeigt werden). Ich kann sie in verschiedenen Zoomstufen laden und anzeigen.
Ich habe den Code so eingestellt, dass die Karte bei Zoomstufen 1-6 einen GeoJSON-Layer anzeigt. Auf den Stufen 7-10 wird eine andere und auf den Stufen 11+ eine dritte angezeigt. Das Anzeigen funktioniert. Ich versuche jetzt, die anderen auszuschalten, wenn einer angezeigt wird. Es funktioniert, von 1-6 auf 7-10 zu gehen (was bedeutet, dass die 1-6-Ebene korrekt deaktiviert wird), aber nicht von 7-10 auf 11+ (was bedeutet, dass die 7-10-Ebene erhalten bleibt), und ich kann es mir nicht vorstellen herausfinden, warum (es verwendet den gleichen Code).
Hier ist der Ajax für die GeoJSON-Ebenen:
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);
});
}
Und hier ist die Hauptfunktion, die den Ajax abhängig vom Zoom aufruft. simpCounter wird anfänglich auf 0 gesetzt.
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;
}
}
});
Der erste Übergang schaltet also die alte Ebene wieder korrekt aus, der zweite Übergang jedoch nicht. Danke für die Hilfe.