2017-07-10 3 views
0

Ich habe ein Problem mit dem Clustering von GoogleMaps. In meiner App werde ich die Karte aktualisieren, wenn der Benutzer zoomt oder über die Karte scrollt. Im mit dem OnCameraIdleListener (link) dafür:Google Maps Clustering funktioniert nicht mit dynamischen Daten

@Override 
public void onCameraIdle() { 
    clearItems(); 
    do API Call 
} 

Wenn dies geschieht im einen API-Aufruf mit dem neuen Radius und im eine neue Liste von Objekten zu tun erhalten, die in meinem aktuellen Radius sichtbar sind. Nachdem ich die Daten erhalten habe, zeichne ich die neuen POIs auf meine Karte. Daher iteriere ich über eine Liste und für jedes Element erstelle ich ein Cluster-Element und füge es dem Cluster-Manager hinzu.

CustomClusterItem clusterItem = new CustomClusterItem(new LatLng(item.getLocation().getLatitude(), item.getLocation().getLongitude()), poi); 
mClusterManager.addItem(clusterItem); 

und nach der Iteration im

mClusterManager.cluster(); 

Leider ist das Clustering funktioniert Aufruf nicht. Es spielt keine Rolle, wie weit Sie zum Beispiel aus der Karte herauszoomen. Gibt es etwas, das fehlt?

Vielen Dank im Voraus!

Antwort

0

Ich hatte gerade 4 POIs auf meiner Karte und das Clustering beginnt gerade mit 5 Elementen. Es ist also kein Fehler. Ich wusste nur nicht, dass eine Größe standardmäßig konfiguriert ist. Wenn jemand Clustering mit weniger als 5 Elementen erreichen will, kann man

@Override 
protected boolean shouldRenderAsCluster(Cluster<T> cluster) { 
    //start clustering if at least 2 items overlap 
    return cluster.getSize() > 1; 
} 

diese Methode aus dem DefaultClusterRenderer (https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/clustering/view/DefaultClusterRenderer.java) verwenden.

Verwandte Themen