ฉันกำลังพยายามแสดงเลเยอร์ GeoJSON ที่เลเยอร์การซูมที่แตกต่างกันโดยใช้ API ของ Leaflet ฉันสามารถโหลดและแสดงทั้งสามเลเยอร์ได้พร้อมกัน (แม้ว่าฉันไม่ต้องการให้พวกเขาทั้งหมดแสดงพร้อมกัน) ฉันสามารถโหลดและแสดงผลที่ระดับการซูมที่แตกต่างกัน
ฉันได้ตั้งรหัสไว้ที่ระดับการซูม 1-6 แผนที่จะแสดงเลเยอร์ GeoJSON หนึ่งชั้น ที่ระดับ 7-10 ระบบจะแสดงรายการอื่นและที่ระดับ 11+ จะแสดงรายการที่สาม แสดงพวกเขาทำงาน สิ่งที่ฉันพยายามจะทำงานตอนนี้คือการปิดคนอื่นถ้ามีคนแสดง ทำงานจาก 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;
}
}
});
ดังนั้นการเปลี่ยนครั้งแรกจะปิดเลเยอร์เก่าอย่างถูกต้อง แต่การเปลี่ยนครั้งที่สองไม่ได้ ขอบคุณสำหรับความช่วยเหลือ