J'essaie d'afficher différentes couches GeoJSON à différentes couches de zoom à l'aide de l'API Leaflet. Je peux charger et afficher les trois couches à la fois (même si je ne veux pas qu'elles apparaissent toutes en même temps). Je peux les charger et les afficher à différents niveaux de zoom.
J'ai le code configuré de sorte qu'aux niveaux de zoom 1 à 6, la carte affiche une couche GeoJSON. Aux niveaux 7 à 10, il en affichera un autre et aux niveaux 11+, il en affichera un troisième. Les afficher fonctionne. Ce que j'essaye de faire maintenant, c'est de désactiver les autres si l'un d'eux est affiché. Passer de 1-6 à 7-10 fonctionne (ce qui signifie qu'il désactive correctement le calque 1-6), mais pas de 7-10 à 11+ (ce qui signifie que le calque 7-10 colle) et je ne peux pas comprendre pourquoi (il utilise le même code).
Voici l'ajax pour les couches 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);
});
}
Et voici la fonction principale qui appelle l'ajax en fonction du zoom. simpCounter est initialement défini sur 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;
}
}
});
Encore une fois, la première transition désactive correctement l'ancien calque, mais pas la deuxième transition. Merci pour l'aide.