Estou tentando mostrar diferentes camadas GeoJSON em diferentes camadas de zoom usando a API do Leaflet. Posso carregar e exibir todas as três camadas ao mesmo tempo (embora na verdade não queira que todas sejam exibidas de uma vez). Posso carregá-los e exibi-los em diferentes níveis de zoom.
Eu tenho o código configurado para que, nos níveis de zoom 1 a 6, o mapa mostre uma camada GeoJSON. Nos níveis 7-10, ele mostrará outro, e nos níveis 11+, mostrará um terceiro. Exibi-los funciona. O que estou tentando começar a trabalhar agora é desativar os outros se um for exibido. Passar de 1-6 a 7-10 funciona (o que significa que desativa a camada 1-6 corretamente), mas não de 7-10 a 11+ (o que significa que a camada 7-10 fica por aqui) e não consigo entender por que (ele usa o mesmo código).
Aqui está o ajax para as camadas 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);
});
}
E aqui está a principal função que chama o ajax, dependendo do zoom. simpCounter é definido como 0 inicialmente.
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;
}
}
});
Então, novamente, a primeira transição desliga a camada antiga corretamente, mas a segunda transição não. Obrigado pela ajuda.