Android Cluster- und Marker-Klicks

8

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

    
tio oit 01.10.2015, 16:07
quelle

2 Antworten

14

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.

    
NasaGeek 01.10.2015, 16:18
quelle
5

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

zu implementieren

Dann erhalten Sie innerhalb der onClusterItemClick -Methode das ClusterItem, welches der Marker ist, auf den geklickt wurde,

%Vor%     
Atul O Holic 02.05.2016 11:37
quelle