2015-04-29 12 views
8

Sto cercando di utilizzare due ClusterManager per Google Map, ma sono in grado di aggiungere un solo clustermanager ed è oggetto evento click,aggiungere ClusterManager multiplo per Google map

googleMap.setOnMarkerClickListener (mClusterManager);

e

mClusterManager.setOnClusterItemClickListener(new OnClusterItemClickListener<Person>() { 

    @Override 
    public boolean onClusterItemClick(Person item) { 
     Log.v("Cluster Click", "Item Click:"+item.getName()); 
     return true; 
    } 
}); 

Come posso aggiungere un altro clustermanager a googlemap?

Grazie in anticipo.

+0

Vedi qualche soluzione a questo? Avendo lo stesso problema con onClusterItemClickListener, onClusterClickListener e Map.setOnMarkerClickListener. – KasparTr

risposta

8

sì, delegare il listener di clic a entrambi i gestori cluster.

map.setOnClickListener(new GoogleMap.OnMarkerClickListener() { 
    boolean onMarkerClick(Marker m) { 
    clusterManager1.onMarkerClick(m) 
    clusterManager2.onMarkerClick(m) 
    } 
}); 
5

è possibile utilizzare MarketManager come questo:

MarkerManager markerManager = new MarkerManager(mMap); 

mClusterManager1 = new ClusterManager<>(getContext(), mMap,markerManager); 
mClusterManager2 = new ClusterManager<>(getContext(), mMap,markerManager); 

mMap.setOnMarkerClickListener(markerManager); 

mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { 
     @Override 
     public void onCameraChange(CameraPosition cameraPosition) { 
      mClusterManager1.onCameraChange(cameraPosition); 
      mClusterManager2.onCameraChange(cameraPosition); 
     } 
    }); 


mClusterManager1.setRenderer(myClusterRenderer1 = new MyClusterRenderer(getContext(), mMap, mClusterManager1)); 
mClusterManager2.setRenderer(myClusterRenderer2 = new MyClusterRenderer(getContext(), mMap, mClusterManager2));