Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中清除/重置ItemizedOverlay?_Android_Google Maps_Itemizedoverlay - Fatal编程技术网

如何在Android中清除/重置ItemizedOverlay?

如何在Android中清除/重置ItemizedOverlay?,android,google-maps,itemizedoverlay,Android,Google Maps,Itemizedoverlay,我有一个程序正在创建一个ItemizedOverlay和一个map。启动时一切正常 当您关闭并重新打开应用程序时,我正在使用onRestart()从服务器获取更新信息并更新地图。问题是,此时,ItemizeOverlay仍然包含旧项,然后继续将新数据添加到现有数据中 我正在寻找一种方法来清除项目溢出。似乎没有ItemizedOveraly.clear或任何类似函数 关于如何做到这一点的想法/为什么不明显?使用MapView时,您可以创建自己的ItemizeOverlay子类。如果需要,可以添加c

我有一个程序正在创建一个ItemizedOverlay和一个map。启动时一切正常

当您关闭并重新打开应用程序时,我正在使用onRestart()从服务器获取更新信息并更新地图。问题是,此时,ItemizeOverlay仍然包含旧项,然后继续将新数据添加到现有数据中

我正在寻找一种方法来清除项目溢出。似乎没有ItemizedOveraly.clear或任何类似函数


关于如何做到这一点的想法/为什么不明显?

使用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)
,请在中查找详细信息