2017-01-14 3 views
0

Если добавить мой clusterItem внутри onMapReady как следующийAndroid карта кластеризация не работает в специфических условиях

@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"))); 
    } 

кластеризация работы, как ожидается, если добавить некоторый кластер внутри onMapReady. Но я называю это веб-сервис периодически, который добавит элемент кластера на карте

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))); 
    } 
} 

После вызова периодической задачи, маркеры добавляются на карту, но не кластеризация эффект даже маркеры изначально невидимыми, если я приближать или вне карта, маркеры видны, но не имеют эффекта кластеризации.

я добавил следующие зависимости

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+' 

И в onResume фрагмента я должен начать периодическую бегунка задачи и остановить его в

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

} 

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

} 

Как добавить элемент кластера на карте внутри периодического задания?

ответ

1

После добавления элементов кластера u следует вызывать методы ниже.

mClusterManager.clearItems(); 
mClusterManager.cluster(); 
+0

благодарит за вас, попробовал, но не работает –

2
public class TheClusterItem implements ClusterItem { 
    ... 
} 

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

После добавления элемента (ов) и вызова метода кластера, кластеры будут обновлены в соответствующей области.

+0

Спасибо, но не сработал –

+0

Как вы его протестировали? Этот код из моего проекта, поэтому я также добавляю/удаляет маркеры и вижу, как кластеры обновляются как можно скорее. – Blackkara

Смежные вопросы