Markierungen nur bei bestimmten Zoomstufen anzeigen

8

Ich baue in leaflet.js eine Fahrradtourenkarte mit subjektiven Informationen, die als Markierungen überlagert sind, nach dem Motto "Dies ist eine großartige Straße", "Diese Stadt ist sehr schön" usw. Um eine Informationsüberflutung zu vermeiden, möchte ich nur Zeigen Sie die markantesten Markierungen bei einer bestimmten Zoomstufe an (z. B. zeigen Sie beeindruckende Straßen, die bei Zoom 9 hervorgehoben wurden, gute Straßen bei 11 und alle Straßeninformationen, einschließlich negativer Kommentare, bei 13+).

Ich habe hier zwei Fragen:

  1. Gibt es eine anerkannte Redewendung oder ein anerkanntes Designmuster für diese Art von Dingen? Ich bin ziemlich glücklich, die Prominenz jedes Markers manuell zu bestimmen, daher brauche ich keinen Clustering-Algorithmus. Es werden vielleicht ein paar Hundert für den ganzen Staat sein, also ist es überschaubar.

  2. Wie kann ich dies in der Broschüre implementieren? Mein offensichtlicher Gedanke ist, einen Handler an map.zoomend () anzuhängen und einfach die relevanten Markierungen ein- oder auszublenden. Gibt es einen besseren Weg?

Steve Bennett
quelle

Antworten:

6

Ich denke, es gibt keinen besseren Weg, als mit zoomendEreignissen umzugehen . Verwenden Sie zum Gruppieren von Markierungen nach Zoomstufen Folgendes L.LayerGroup: Das Ein- und Ausschalten ist einfacher.

Ein Aufruf map.removeLayer()oder map.addLayer()zweimal führt nicht zu Fehlern oder fügt zweimal eine Ebene hinzu: Es gibt einen internen Hash, der solche Dinge verhindert. Sie können also nur ein paar if (zoom > 6 && zoom <= 10 ) map.addLayer(zoom6_10); else map.removeLayer(zoom6_10);im Event-Handler haben.

Ilja Zverev
quelle