dieses Versuchen zeigen wollen seine, was ich getan habe Referenzen zu bekommen Marker abzubilden, wenn Clustering:
Wenn Sie eine ClusterManager
es schaffen erstellt und verwendet immer eine Instanz von DefaultClusterRenderer
, wenn Sie die .setRenderer()
-Methode nicht aufrufen und eine Instanz Ihrer eigenen ClusterRenderer
-Implementierung übergeben. Wenn Sie die ClusterManager
einlassen erstellen ihre eigene DefaultClusterRenderer
der Schlüssel ist es ausdrücklich hinzufügen, so dass Sie einen Verweis darauf halten kann (weil die ClusterManager
keine Getter-Methode hat, so dass Sie einen Verweis auf die ClusterRenderer
bekommen kann seine Verwendung):
mClusterManager = new ClusterManager<ClusterItem>(getActivity(), mMap);
mRenderer = new DefaultClusterRenderer(getActivity(), mMap, mClusterManager);
mClusterManager.setRenderer(mRenderer);
mClusterManager.addItem(ClusterItem);
Dann, wenn Sie Zugang zu einem Marker benötigen, übergeben Sie die ClusterRenderer
ClusterItem
mit dem Marker verbunden. Die ClusterItem
Sie verwenden der Marker zu finden, wird die ClusterItem
Sie an die ClusterManager
geleitet, um die Markierung zu dem Cluster ursprünglich hinzuzufügen:
Marker marker = mRenderer.getMarker(ClusterItem);
if(marker != null){
marker.showInfoWindow();
}
Das Marker
Objekt ist null, wenn die Markierung noch nicht auf der Karte gemacht wurde Vergewissern Sie sich daher, dass das marker-Objekt nicht null ist, bevor Sie es verwenden.
Wenn Sie sicher sind, die Markierung auf der Karte platziert wurde, wenn Sie .getMarker()
aufrufen und Marker ist immer noch null dann überschreiben die .equals()
Methode im Objekt Verwendung der ClusterItem
Schnittstelle zu implementieren, um sicherzustellen, dass Sie die richtige ClusterItem
Objekt finden gehalten vom Renderer.
Fragen Sie, wie Sie einen Verweis auf einen Marker erhalten, der vom ClusterRenderer zu einer Karte hinzugefügt wurde? (d. h., Sie erhalten einen Verweis auf einen Marker, der hinzugefügt wurde, nachdem Sie einen Cluster vergrößert haben?) –
Ja, wenn ich die Referenz erhalte, kann ich das Infofenster aufrufen. Ich habe gelesen und gesucht, kann aber den Weg nicht finden. – robertDraven
Sollte in der Lage sein, 'mClusterManager.getMarkerCollection(). GetMarkers()' zu verwenden, aber Sie müssen durch die Liste gehen, um die Marker-Referenz zu erhalten, nach der Sie suchen. –