Tôi đang cố gắng hiển thị các lớp GeoJSON khác nhau ở các lớp thu phóng khác nhau bằng API Leaflet. Tôi có thể tải và hiển thị cả ba lớp cùng một lúc (mặc dù tôi không thực sự muốn tất cả chúng hiển thị cùng một lúc). Tôi có thể tải và hiển thị chúng ở các mức thu phóng khác nhau.
Tôi có mã được thiết lập để ở các mức Thu phóng 1-6, bản đồ sẽ hiển thị một lớp GeoJSON. Ở cấp độ 7-10, nó sẽ hiển thị một cấp độ khác và ở cấp độ 11+, nó sẽ hiển thị một phần ba. Hiển thị chúng hoạt động. Những gì tôi đang cố gắng để làm việc bây giờ là tắt những cái khác nếu một cái được hiển thị. Chuyển từ 1-6 đến 7-10 hoạt động (có nghĩa là nó tắt lớp 1-6 một cách chính xác), nhưng không phải từ 7-10 đến 11+ (có nghĩa là lớp 7-10 dính xung quanh) và tôi không thể hình dung được tại sao (nó sử dụng cùng một mã).
Đây là ajax cho các lớp 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);
});
}
Và đây là chức năng chính gọi ajax tùy thuộc vào mức thu phóng. simpCount được đặt thành 0 ban đầu.
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;
}
}
});
Vì vậy, một lần nữa, quá trình chuyển đổi đầu tiên tắt lớp cũ một cách chính xác, nhưng quá trình chuyển đổi thứ hai thì không. Cảm ơn đã giúp đỡ.