Mithun Sarker
Mithun Sarker

Reputation: 4023

Android map clustering is not working in specific condition

If I add my clusterItem inside onMapReady like following

    @Override
    public void onMapReady(GoogleMap googleMap) {
        Log.d("CustomMapFragment","onMapReady");
        map = googleMap;
        map.getUiSettings().setAllGesturesEnabled(true);
        map.getUiSettings().setCompassEnabled(true);
        map.getUiSettings().setZoomGesturesEnabled(true);
        map.getUiSettings().setZoomControlsEnabled(true);

        mClusterManager.addItem(new MyMarker(23.748865, 90.411655, "a", new Resultset("112113","dsd")));
        mClusterManager.addItem(new MyMarker(23.749049, 90.411382, "b", new Resultset("112113","ddfdsd")));
        mClusterManager.addItem(new MyMarker(23.749129, 90.411088, "c", new Resultset("11211dsd3","dsd")));
        mClusterManager.addItem(new MyMarker(23.749241, 90.41068, "d", new Resultset("112113","fgdsd")));
        mClusterManager.addItem(new MyMarker(23.749183, 90.410257, "e", new Resultset("112113","qwdsd")));
    }

Clustering work as expected if I add some cluster inside onMapReady. But I am calling a web service periodically which will add cluster item to map

UIUpdater mUIUpdater = new UIUpdater(new Runnable() {
    @Override
    public void run() {
       //running a web service 
        mClusterManager.addItem(new MyMarker(lat, longitude, memberListModel.get(i).getFirstName()+" "+ memberListModel.get(i).getLastName(), memberListModel.get(i)));
    }
}

After calling periodic task, markers are added to map but there is no clustering effect even markers are initially invisible if I zoom in or out the the map , markers are visible but no clustering effect .

I have added the following dependencies

compile "com.google.android.gms:play-services-maps:9.4.0"
compile "com.google.android.gms:play-services-location:9.4.0"
compile 'com.google.maps.android:android-maps-utils:0.4+'

And in onResume of the fragment I have start the periodic task runner and stop it in onPause

@Override
public void onResume() {
    super.onResume();
    mUIUpdater.startUpdates();

}

@Override
public void onPause() {
    super.onPause();
    mUIUpdater.stopUpdates();

}

How can I add cluster item to map inside a periodic task runner ?

Upvotes: 0

Views: 1599

Answers (2)

blackkara
blackkara

Reputation: 5052

public class TheClusterItem implements ClusterItem {
    ...
}

TheClusterItem item = new TheClusterItem(...);
mClusterManager.addItem(item); // or list of items
mClusterManager.cluster();

After adding item(s) and invoking cluster method, clusters will be updated in appropriate area.

Upvotes: 3

ugur
ugur

Reputation: 3654

After adding cluster items u should call below methods.

mClusterManager.clearItems();
mClusterManager.cluster();

Upvotes: 1

Related Questions