如何制作一个可变的Itemize Overlay

时间:2010-01-16 04:13:03

标签: android google-maps overlay near-real-time

我想用可更换的针脚制作谷歌地图覆盖图。一种可视化的简单方法是考虑近实时覆盖,其中引脚不断改变位置。

但是,我似乎无法用ItemizedOverlay来考虑一种安全的方法。问题似乎是对populate的调用 - 如果某些map线程调用了size(),然后我的数据发生了变化,那么map调用访问getItem()时的结果可能是IndexOutOfBoundsException。

有人能想到一个更好的解决方案,而不是在同步块中重载populate和wrap super.populate吗?

也许我可以使用正常叠加获得更好的运气?似乎存在分项管理数据,或许我通过使用它来犯一个根本性的错误?

感谢您的帮助,我的大脑正在受伤!

Hamy

2 个答案:

答案 0 :(得分:3)

如上所述 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();
}

答案 1 :(得分:0)

我有一个类似的问题,并通过相互排除(是的......使它们同步)解决方法 size 更新(添加/更改)方法销... 实际上,第一个被称为GUI线程,而第二个是异步工作者,所以它们可能是异步调用的