Android Maps Utils Clustering zeigen InfoWindow

7

Ich plane, das Google Maps-Marker-Clustering zu verwenden, das in der utils-Bibliothek verfügbar ist, aber die Google Beispiel-App zeigt nur Marker-Cluster ohne infoWindow an. Ich frage mich jetzt, kann ich nicht ein InfoWindow zeigen? Ich möchte, dass das InfoWindow wie mit einem normalen Google Maps-Marker auf dem Marker angezeigt wird, nicht auf dem Cluster.

Der Code, den ich habe: (Aus dem Google-Beispiel)

%Vor%     
qwertz 20.06.2015, 19:50
quelle

3 Antworten

23

Hier ist eine vereinfachte und leicht modifizierte Lösung basierend auf diese Antwort . Beachten Sie, dass die verknüpfte Antwort ein InfoWindow für Marker und Cluster implementiert.

Diese Lösung implementiert nur InfoWindows für Marker.

Es ist ähnlich wie Sie einen benutzerdefinierten InfoWindowAdapter für normale Marker ohne Clustering implementieren würden, aber mit der zusätzlichen Anforderung, dass Sie einen Verweis auf das aktuell ausgewählte Objekt behalten, damit Sie den Titel und das Snippet von seiner MyItem -Instanz erhalten können , da der Marker den Titel und das Snippet nicht wie gewöhnlich speichert.

Beachten Sie, dass es viel einfacher ist, die Funktionalität so zu erweitern, dass im InfoWindow für jeden Marker beliebig viele Datentypen angezeigt werden, da alle Daten in MyItem Referenzen gespeichert sind.

Zuerst die MyItem.java, die zusätzliche Felder für Titel und Snippet enthält:

%Vor%

Hier ist die vollständige Aktivitätsklasse, die alle Funktionen zur Unterstützung von InfoWindows für jeden Marker enthält, der mit der Cluster-Bibliothek hinzugefügt wurde:

Bearbeiten: Es wurde Unterstützung für die Verarbeitung von Klickereignissen im InfoWindow hinzugefügt, die Aktivität OnClusterItemInfoWindowClickListener implementiert und der onClusterItemInfoWindowClick -Rückruf hinzugefügt.

%Vor%

info_window.xml:

%Vor%

Ergebnis:

Erster Start:

Auszoomen, startet Clustering:

Herauszoomen, mehr Clustering:

Dann zoomen Sie ein und klicken auf einen einzelnen Marker:

Klicken Sie dann auf einen anderen Marker:

Bearbeiten: Um die "Sprechblase" um das benutzerdefinierte InfoWindow anzuzeigen, verwenden Sie getInfoContents() anstelle von getInfoWindow() :

%Vor%

Ergebnis:

    
Daniel Nugent 20.06.2015, 22:43
quelle
0
%Vor%     
abhishesh 20.06.2015 20:17
quelle
0

Sie könnten den folgenden Ansatz in Betracht ziehen:

%Vor%     
Nikhil Jogdand 16.09.2015 12:22
quelle