Ich verwende das Android-Clustering-Dienstprogramm auf einer Karte und implementierte erfolgreich einen onclick-Listener mit mClusterManager.setOnClusterItemClickListener () für alle von der Clustering-Bibliothek behandelten Marker.
Da ich auch möchte, dass einige Marker immer nicht gruppiert sind, füge ich auch einige Marker hinzu, ohne den mClusterManager zu verwenden, sondern direkt den mapmap.addMarker () der Map, auf diese Weise bin ich sicher, dass sie niemals auf der Karte geclustert sind / p>
Mein Problem ist, dass ich Klicks auf diese Markierungen (die immer nicht gruppierten) nicht abfangen kann, weil ich bereits mMap.setOnMarkerClickListener (mClusterManager) verwendet habe, um die Marker der angeklickten Cluster zu handhaben.
Gibt es eine Möglichkeit, auf die geklickten gruppierten Marker und die geklickten Marker zu hören, die nicht von der Cluster-Bibliothek gehandhabt werden?
Oder gibt es eine Möglichkeit, den Cluster-Manager so einzustellen, dass er niemals einige Marker zusammenfasst? In diesem Fall muss ich diese verschiedenen Klick-Listener nicht verarbeiten, da alle Markierungen mit dem Clustering-Dienstprogramm angezeigt werden.
Danke
Sie können ein neues MarkerManager
erstellen, das Sie an den Konstruktor ClusterManager
übergeben. Erstellen Sie dann eine neue Markersammlung mit MarkerManager#newCollection
und fügen Sie der Map mithilfe der MarkerManager.Collection#addMarker
-Methode Ihre normalen Markers hinzu.
Rufen Sie anschließend mMap.setOnMarkerClickListener(mClusterManager)
auf, rufen Sie mMap.setOnMarkerClickListener(mMarkerManager)
auf und leiten Sie Ihre Marker
click-Ereignisse an die richtigen Listener weiter. Außerdem müssen Sie Ihren onMarkerClick-Listener für normale Marker mit der Funktion MarkerManager.Collection#setOnMarkerClickListener(GoogleMap.OnMarkerClickListener markerClickListener)
einrichten.
Ich empfehle, die Quelle von MarkerManager und ClusterManager Klassen, um eine bessere Vorstellung davon zu bekommen, wie die Klassen interagieren.
Eine weitere Möglichkeit, das Klickereignis für Marker
zu erhalten, ist OnClusterItemClickListener
interface.
Rufen Sie mClusterManager.setOnClusterItemClickListener(this);
auf und bringen Sie Ihre Klasse dazu, OnClusterItemClickListener
Dann erhalten Sie innerhalb der onClusterItemClick
-Methode das ClusterItem, welches der Marker ist, auf den geklickt wurde,
Tags und Links android google-maps android-maps-utils