我想制作一个带有可更改图钉的 Google map 叠加层。一种简单的可视化方法是考虑近乎实时的覆盖,其中引脚不断改变位置。
但是,我似乎想不出一种安全的方法来使用 ItemizedOverlay 来执行此操作。 。问题似乎是对 populate 的调用 - 如果某些 map 线程调用 size(),然后我的数据发生更改,则 map 调用访问 getItem() 时的结果可能是 IndexOutOfBoundsException。
有人能想到比重载 populate 并将 super.populate 包装在同步块(synchronized block)中更好的解决方案吗?
也许我可以使用普通的叠加层获得更好的运气?分项似乎是为您管理数据而存在的,也许我在使用它时犯了一个根本性错误?
感谢您的帮助,我的大脑受伤了!
哈米
最佳答案
正如提到的 this article
在列表中添加或删除项目后,您需要调用以下命令。
setLastFocusedIndex(-1);
填充();
示例:
@Override
protected OverlayItem createItem(int i) {
return overlays.get(i);
}
protected void removeOverlay(OverlayItem o){
overlays.remove(o);
setLastFocusedIndex(-1);
populate();
}
@Override
public int size() {
return overlays.size();
}
public void addOverlay(OverlayItem o){
overlays.add(o);
setLastFocusedIndex(-1);
populate();
}
关于android - 如何制作可变的 ItemizedOverlay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2076176/