gpt4 book ai didi

android - 如何清除/重置 Android 中的 ItemizedOverlay?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:18 26 4
gpt4 key购买 nike

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

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

我正在寻找一种清除 ItemizedOverlay 的方法。似乎没有 ItemizedOveraly.clear 或任何类似的功能。

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

最佳答案

典型的自定义叠加层如下所示。它将 map 上显示的各种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();
}
}

可以公开添加/删除单个覆盖项的方法,也可以公开删除所有覆盖项的方法(清除方法)。

删除单个叠加项

MyItemizedOverlay sitesOverlay =  (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.removeOverlay(overlay);

添加单个 overlayItem

MyItemizedOverlay sitesOverlay =  (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.addOverlay(new OverlayItem(p, "title", "snippet"));

移除所有 overlayItems

MyItemizedOverlay sitesOverlay =  (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.clear();

关于android - 如何清除/重置 Android 中的 ItemizedOverlay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4306953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com