我试图使用来自服务器的新数据更新我的地图,但是我无法弄清如何从地图中删除旧项目(标记和集群-使用ClusterManager) - 似乎我只能在ClusterManager中添加。
我有一个广播接收器,当有新数据时会收到意图。我尝试了这样的代码:(但是在“... getMarkers()。clear();”一行上给我UnsupportedOperationException)。
我只使用了这个函数向地图中添加数据。
我有一个广播接收器,当有新数据时会收到意图。我尝试了这样的代码:(但是在“... getMarkers()。clear();”一行上给我UnsupportedOperationException)。
private BroadcastReceiver myRefrestMapBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive");
mClusterManager.clearItems();
mClusterManager.getMarkerCollection().getMarkers().clear();
mClusterManager.getClusterMarkerCollection().getMarkers().clear();
mClusterManager.addItems(LocationGetter.getReports());
}
};
我只使用了这个函数向地图中添加数据。
java.util.Collection<Marker> userCollection = mClusterManager.getMarkerCollection().getMarkers();
ArrayList<Marker> userList = new ArrayList<Marker>(userCollection);
// now is userList empty
for(Marker marker: userList){
marker.remove();
}
java.util.Collection<Marker> userCollection2 = mClusterManager.getClusterMarkerCollection().getMarkers();
ArrayList<Marker> userList2 = new ArrayList<Marker>(userCollection2);
// now is userList2 empty
for(Marker marker: userList2){
marker.remove();
}
mClusterManager.addItems(LocationGetter.getReports());
ArrayList
,请确保你有正确的ClusterManager
和MarkerCollection()
。 - bjiang