1

que j'ai trouvé qu'il ya un moyen de changer ClusterItem options de rendu, de les personnaliser cette façon:ClusterManager plusieurs styles pour marqueurs ClusterItems de Google maps v2 utils

clusterManager.setRenderer(new OwnIconRendered(getApplicationContext(), getMap(), clusterManager)); 

OwnIconRendered ETENDE DefaultClusterRenderer.

Mais, il change tous les marqueurs dans un style. J'ai besoin de différentes options de styles pour différents ClusterItems. J'ai essayé d'ajouter manuellement des marqueurs dans la collection clusterManager, mais le clustering ne fonctionne pas.

MarkerManager.Collection markerCollection = mClusterManager.getMarkerCollection(); 
for(MyMarker marker: markerList){ 
markerCollection.addMarker(getMarkerOptions(latLng, marker.getLabel(), marker.getType())); 
} 

Répondre

1

Je l'ai compris. Le regroupement avec différentes icônes fonctionne très bien. D'abord, j'ai dû ajouter quelques champs à ma classe ClusterMarker qui implémente ClusterItem.

public class ClusterMarker implements ClusterItem { 
private final LatLng latLng; 
private MyMarker myMarker; 

... 
public void setMyMarker(MyMarker myMarker) { 
    this.myMarker = myMarker; 
} 
} 

classe MyMarker a quelques informations pour les marqueurs de style, tilte et ids.

Plus tard dans le code ajouter simplement des marqueurs à l'instance ClusterManager ainsi:

mClusterManager.addItem(clusterMarker); 

En classe OwnIconRendered J'overrided onBeforeClusterItemRendered méthode où tout le style de marqueur qui se passe et onClusterItemRendered méthode J'ai ajouté des balises à marqueurs, donc plus tard, je pourrais identifier les marqueurs sur la carte en cliquant sur l'événement.

public class OwnIconRendered extends DefaultClusterRenderer<ClusterMarker> { 
... 
cunstructor 
... 

@Override 
protected void onBeforeClusterItemRendered(ClusterMarker item, MarkerOptions markerOptions) { 

    MyMarker myMarker = item.getMyMarker(); 

    markerOptions.icon(myMarker.getIcon()); 
    markerOptions.title(myMarker.getLabel()); 
    markerOptions.anchor(0.5f, 1); 
    super.onBeforeClusterItemRendered(item, markerOptions); 
} 

@Override 
protected void onClusterItemRendered(ClusterMarker clusterMarker, Marker marker) { 
    marker.setTag(clusterMarker.getPlaceMarker().getItemId()); 
    super.onClusterItemRendered(clusterMarker, marker); 
    clusterMarkerMap.put(marker, clusterMarker); 
} 
} 
+0

Solution idéale –