Chỉ hiển thị các điểm đánh dấu ở các mức thu phóng nhất định


8

Tôi đang xây dựng bản đồ tham quan theo chu kỳ trong leaflet.js, với thông tin chủ quan được phủ lên dưới dạng điểm đánh dấu, dọc theo dòng "đây là một con đường tuyệt vời", "thị trấn này khá đẹp", v.v. Để tránh quá tải thông tin, tôi chỉ muốn hiển thị các điểm đánh dấu nổi bật nhất ở mức thu phóng nhất định (ví dụ: hiển thị các đường tuyệt vời được tô sáng ở mức thu phóng 9, đường tốt ở 11 và tất cả thông tin về đường, bao gồm cả nhận xét tiêu cực, ở mức 13+)

Tôi có hai câu hỏi ở đây:

  1. Có một thành ngữ hoặc mẫu thiết kế được công nhận cho loại điều này? Tôi khá vui khi quyết định thủ công sự nổi bật của từng điểm đánh dấu, vì vậy tôi không cần bất kỳ loại thuật toán phân cụm nào. Có thể có một vài trăm cho toàn bộ tiểu bang, vì vậy nó có thể quản lý được.

  2. Làm thế nào tôi có thể thực hiện điều này trong Tờ rơi? Suy nghĩ rõ ràng của tôi là gắn một trình xử lý vào map.zoomend () và chỉ cần hiển thị hoặc ẩn các điểm đánh dấu có liên quan. Có cách nào tốt hơn?

Câu trả lời:


6

Tôi nghĩ không có cách nào tốt hơn là xử lý zoomendsự kiện. Để nhóm các điểm đánh dấu theo mức thu phóng, sử dụng L.LayerGroup: bật và tắt chúng sẽ dễ dàng hơn.

Gọi map.removeLayer()hoặc map.addLayer()hai lần sẽ không tạo ra bất kỳ lỗi nào hoặc thêm một lớp hai lần: có một hàm băm bên trong ngăn chặn những điều đó. Vì vậy, bạn có thể có một loạt if (zoom > 6 && zoom <= 10 ) map.addLayer(zoom6_10); else map.removeLayer(zoom6_10);các xử lý sự kiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.