Tampilkan spidol hanya pada level zoom tertentu

8

Saya sedang membangun peta siklus tur di leaflet.js, dengan informasi subjektif yang dilapis sebagai spidol, di sepanjang baris "ini jalan yang bagus", "kota ini cukup bagus" dll. Untuk menghindari informasi yang berlebihan, saya hanya ingin perlihatkan penanda paling menonjol pada tingkat zoom tertentu (mis. tunjukkan jalan-jalan yang luar biasa yang disorot di zoom 9, jalan bagus di 11, dan semua informasi jalan, termasuk komentar negatif, di 13+)

Saya punya dua pertanyaan di sini:

  1. Apakah ada idiom atau pola desain yang diakui untuk hal semacam ini? Saya cukup senang secara manual menentukan keunggulan masing-masing marker, jadi saya tidak perlu algoritma pengelompokan apa pun. Mungkin akan ada beberapa ratus untuk seluruh negara bagian, jadi bisa dikelola.

  2. Bagaimana saya bisa menerapkan ini di Leaflet? Pikiran saya yang jelas adalah melampirkan pawang ke map.zoomend () dan hanya menunjukkan atau menyembunyikan penanda yang relevan. Apakah ada cara yang lebih baik?

Steve Bennett
sumber

Jawaban:

6

Saya pikir tidak ada cara yang lebih baik daripada menangani zoomendacara. Untuk mengelompokkan penanda berdasarkan tingkat zoom, gunakan L.LayerGroup: menyalakan dan mematikannya akan lebih mudah.

Memanggil map.removeLayer()atau map.addLayer()dua kali tidak akan menghasilkan kesalahan atau menambah lapisan dua kali: ada hash internal yang mencegah hal-hal seperti itu. Jadi Anda bisa memiliki banyak if (zoom > 6 && zoom <= 10 ) map.addLayer(zoom6_10); else map.removeLayer(zoom6_10);di pengendali acara.

Ilja Zverev
sumber