Leaflet API를 사용하여 다른 줌 레이어에서 다른 GeoJSON 레이어를 표시하려고합니다. 세 레이어를 모두 한 번에로드하고 표시 할 수 있습니다 (실제로 모든 레이어가 한 번에 표시되는 것을 원하지는 않지만). 다른 줌 레벨로로드하여 표시 할 수 있습니다.
확대 / 축소 수준 1-6에서지도에 하나의 GeoJSON 레이어가 표시되도록 코드를 설정했습니다. 7-10 레벨에서는 다른 것을 보여줄 것이고 11+ 레벨에서는 3 분의 1을 보일 것입니다. 그것들을 표시하면 작동합니다. 내가 지금 일하려고하는 것은 다른 하나가 표시되면 다른 것을 끄는 것입니다. 1-6에서 7-10으로 이동하면 (1-6 레이어가 올바르게 꺼짐을 의미) 7-10에서 11+ (7-10 레이어가 붙어 있음을 의미)가 아니며 그림을 볼 수 없습니다 왜 (같은 코드를 사용하는지).
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);
});
}
그리고 줌에 따라 아약스를 호출하는 주요 기능이 있습니다. simpCounter는 처음에 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;
}
}
});
다시 한 번, 첫 번째 전환은 이전 레이어를 올바르게 끄지 만 두 번째 전환은 그렇지 않습니다. 도와 주셔서 감사합니다.