3

I am using Google Maps Marker Clustering available in the utils library. On clicking a Cluster, the below onClusterClick method is not called. Is there a Cluster click event?

 @Override
    public boolean onClusterClick(Cluster<MyItem> cluster)
    {        
        return true;
    }
Bala Sakthis
  • 664
  • 1
  • 8
  • 20
Vinit Yadav
  • 284
  • 4
  • 14

3 Answers3

3

you need add this line before:

map.setOnMarkerClickListener(yourClusterManager);
John Le
  • 51
  • 6
3

Here is the way that how can achieve your requirement i.e. to click on cluster or cluster item.

mapSupportFragment.getMapAsync(new OnMapReadyCallback() {
    @Override
    public void onMapReady(GoogleMap googleMap) {

        mMap = googleMap; //(Here mMap is my GoogleMap object declared & was initialized).

        // Initialize the manager with the context and the map.
        mClusterManager = new ClusterManager<AppClusterItem>(MFragmentActivity.this, mMap);
        mClusterManager.setRenderer(new MyCustomRender(MFragmentActivity.this, mMap, mClusterManager)); 
        // Here which I used is my custom rendering class

        // Point the map's listeners at the listeners implemented by the cluster manager.
        mMap.setOnCameraChangeListener(mClusterManager);
        mMap.setOnMarkerClickListener(mClusterManager);

        mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener<AppClusterItem>() {
            @Override
            public boolean onClusterClick(Cluster<AppClusterItem> cluster) {

                Log.e("I clicked @ ", "Cluster which consumes whole list of ClusterItems");
                return false;
            }
        });

        mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<AppClusterItem>() {
            @Override
            public boolean onClusterItemClick(AppClusterItem item) {
                Log.e("I clicked @ ", "Cluster Item");
                return false;
            }
        });
    }
});

This solution will then not let you to use GoogleMap.setOnMarkerClickListener method, then so for it, you can read this answer.

Community
  • 1
  • 1
Harpreet
  • 2,990
  • 3
  • 38
  • 52
1

maby its too late but if there any one want to know : just set OnClusterItemClcikListener on your CkusterManger :

        mClusterManager.setOnClusterItemClickListener(this);

then make you class implement ClusterManager.OnClusterItemClickListener

activity a implements ClusterManager.OnClusterItemClickListener .... 

then finaly call

 @Override
public boolean onClusterItemClick(ClusterItem clusterItem) {
    Toast.makeText(getActivity(), "clciked", Toast.LENGTH_SHORT).show();
    return true;
}
danny
  • 147
  • 1
  • 15