wien

Wien Beispiel HOWTO (Teil 5) - Leaflet Markercluster

Auf der Leaflet Plugins Seite unter Clustering/Decluttering finden wir das Leaflet.markercluster Plugin von Dave Leaver

Unter Using the plugin sehen wir, dass wir zwei Stylesheets und ein Javascript benötigen:

Wir holen uns die Links zu den benötigten Dateien bei https://cdnjs.com/libraries/leaflet.markercluster und bauen sie mit Copy Script Tag im <head> Bereich von index.html ein

<!-- Leaflet markercluster -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.5.3/MarkerCluster.Default.css" integrity="sha512-6ZCLMiYwTeli2rVh3XAPxy3YoR5fVxGdH/pz+KMCzRY2M65Emgkw00Yqmhh8qLGeYQ3LbVZGdmOX9KUjSKr0TA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.5.3/MarkerCluster.css" integrity="sha512-mQ77VzAakzdpWdgfL/lM1ksNy89uFgibRQANsNneSTMD/bj0Y/8+94XMwYhnbzx8eki2hrbPpDm0vD0CiT2lcg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.5.3/leaflet.markercluster.js" integrity="sha512-OFs3W4DIZ5ZkrDhBFtsCP6JXtMEDGmhl0QPlmWYBJay40TT1n3gt2Xuw8Pf/iezgW9CdabjkNChRqozl/YADmg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

🔗 COMMIT

Dann müssen wir nur noch beim Code für die Hotels bei der Definition des Overlays eine markerClusterGroup statt einer featureGroup verwenden

let overlay = L.markerClusterGroup();

🔗 COMMIT

Voilà, die Icons werden nun gruppiert. Bei den Kreisen der Gruppierung sieht man die Anzahl und Verbreitung der zusammengefassten Icons (als Fläche beim mouseover), beim Klick werden die Cluster so gut es geht aufgelöst.

Eine Änderung für bessere Usability können wir noch über das Optionen-Objekt implementieren: ab Zoomfaktor 17, das ist einmal einzoomen von der Startansicht im Zoomlevel 16, ist auf der Karte genügend Platz für die Hotel-Icons und deshalb unterdrücken wir das Clustering

let overlay = L.markerClusterGroup(
    disableClusteringAtZoom: 17
);

🔗 COMMIT