特定のズームレベルでのみマーカーを表示する


8

「これは素晴らしい道です」、「この町はかなりいい」などの線に沿って、主観的な情報をマーカーとしてオーバーレイして、leaflet.jsでサイクルツーリングマップを作成しています。情報の過負荷を避けるために、特定のズームレベルで最も目立つマーカーを表示します(たとえば、ズーム9で強調表示された素晴らしい道路、11で良い道路、13歳以上で否定的なコメントを含むすべての道路情報を表示します)

ここで2つの質問があります。

  1. この種の認識されたイディオムやデザインパターンはありますか?各マーカーのプロミネンスを手動で決定できてとても嬉しいので、クラスタリングアルゴリズムは必要ありません。州全体で数百になる可能性があるため、管理可能です。

  2. これをリーフレットにどのように実装できますか?私の明白な考えは、ハンドラーをmap.zoomend()にアタッチして、関連するマーカーを表示または非表示にすることです。もっと良い方法はありますか?

回答:


6

zoomendイベントを処理するより良い方法はないと思います。マーカーをズームレベルでグループ化するには、次のコマンドを使用しますL.LayerGroup

map.removeLayer()またはをmap.addLayer()2回呼び出しても、エラーが発生したり、レイヤーが2回追加されたりすることはありません。そのようなことを防ぐ内部ハッシュが存在します。そのif (zoom > 6 && zoom <= 10 ) map.addLayer(zoom6_10); else map.removeLayer(zoom6_10);ため、イベントハンドラーに多数を含めることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.