【发布时间】:2015-12-20 01:20:18
【问题描述】:
我正在尝试使用来自服务器的较新数据更新我的地图,但我不知道如何从中删除旧项目(标记和集群 - 使用 ClusterManager) map ( - 在我看来,我只能在 ClusterManager 中添加。
我有 BroadcastReceiver,它会在有新数据时获得意图。我正在尝试这样的事情:(但它给了我 UnsupportedOperationException 在线 "...getMarkers().clear();"
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()。
标签: java android google-maps google-maps-api-3 markerclusterer