Chr*_*ris 4 android google-maps clear itemizedoverlay
我有一个程序正在创建ItemizedOverlay和一个地图.启动时一切正常.
当您关闭并重新打开应用程序时,我使用onRestart()从我的服务器获取更新信息并更新地图.问题是此时,ItemizedOverlay仍然包含旧项目,然后继续将新数据添加到现有数据.
我正在寻找一种清除ItemizedOverlay的方法.似乎没有ItemizedOveraly.clear或任何类似的功能.
关于如何做到这一点的想法/为什么不明显?
dde*_*ele 13
典型的自定义叠加层看起来像这样.它封装了列表中地图上显示的各种OverlayItem.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
可以暴露方法来添加/删除单个overlayitems,还可以删除所有overlayitems(clear方法).
删除单个overlayitem
MyItemizedOverlay sitesOverlay = (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.removeOverlay(overlay);
Run Code Online (Sandbox Code Playgroud)
添加一个overlayItem
MyItemizedOverlay sitesOverlay = (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.addOverlay(new OverlayItem(p, "title", "snippet"));
Run Code Online (Sandbox Code Playgroud)
删除所有overlayItems
MyItemizedOverlay sitesOverlay = (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.clear();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9881 次 |
| 最近记录: |