如何在Android中清除/重置ItemizedOverlay?
我有一个程序正在创建一个ItemizedOverlay和一个map。启动时一切正常 当您关闭并重新打开应用程序时,我正在使用onRestart()从服务器获取更新信息并更新地图。问题是,此时,ItemizeOverlay仍然包含旧项,然后继续将新数据添加到现有数据中 我正在寻找一种方法来清除项目溢出。似乎没有ItemizedOveraly.clear或任何类似函数如何在Android中清除/重置ItemizedOverlay?,android,google-maps,itemizedoverlay,Android,Google Maps,Itemizedoverlay,我有一个程序正在创建一个ItemizedOverlay和一个map。启动时一切正常 当您关闭并重新打开应用程序时,我正在使用onRestart()从服务器获取更新信息并更新地图。问题是,此时,ItemizeOverlay仍然包含旧项,然后继续将新数据添加到现有数据中 我正在寻找一种方法来清除项目溢出。似乎没有ItemizedOveraly.clear或任何类似函数 关于如何做到这一点的想法/为什么不明显?使用MapView时,您可以创建自己的ItemizeOverlay子类。如果需要,可以添加c
关于如何做到这一点的想法/为什么不明显?使用MapView时,您可以创建自己的ItemizeOverlay子类。如果需要,可以添加
clear()
方法。典型的自定义覆盖如下所示。它将地图上显示的各种覆盖项封装在列表中
public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem>{
private List<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
public MyItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
public void removeOverlay(OverlayItem overlay) {
mOverlays.remove(overlay);
populate();
}
public void clear() {
mOverlays.clear();
populate();
}
@Override
public int size() {
return mOverlays.size();
}
}
添加一个覆盖项
MyItemizedOverlay sitesOverlay = (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.removeOverlay(overlay);
MyItemizedOverlay sitesOverlay = (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.addOverlay(new OverlayItem(p, "title", "snippet"));
删除所有覆盖项
MyItemizedOverlay sitesOverlay = (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.clear();
可以但是我应该在clear()方法中添加什么呢?如何清空ItemizedOverlay?当触摸地图(移除项目的位置)时,我会遇到
ArrayIndexOutOfBoundsException
,甚至调用clear()
和populate()
。解决方法是在填充之前调用setLastFocusedIndex(-1)
,请在中查找详细信息