我仍然不相信我在 SO 上找不到任何问题,所以请随时指出我的问题。
我正在使用显示多个标记的谷歌地图实现应用程序。我想让它动态化,以便只绘制看到的标记。为此,我希望能够知道地图何时完全停止,然后等待几秒钟,这样我就不会在用户可能仍在移动地图时弄乱地图,然后清除标记并绘制新标记。如果用户在计时器触发之前移动,它必须取消然后再次开始计数。
到目前为止,当动画停止使用时,我设法让相机更改触发onCameraChangeListener
,尽管它的定义指定这可能仍会在动画中间调用。这是正确的方法吗?
第二个问题是关于计时器的。我目前的实现如下:
map.setOnCameraChangeListener(new OnCameraChangeListener() {
public void onCameraChange(CameraPosition position) {
refresher.schedule(new refreshMapData(), 2000);
}
});
实际更新必要标记的 Timer 是这个:
class refreshMapData extends TimerTask{
public void run() {
map.clear();
for ( ... ) {
map.addMarker( ... );
}
}
}
这显然会引发“不在主线程上”异常并引导我进入下一个问题:这个问题的解决方法是什么?如果不允许从主线程外部进行修改,如何使用计时器修改 Google Map 的值?
编辑:关于第一个问题,我想我只需要比较自上次以来位置是否发生变化,这样就可以了。只需要计时器更新问题的答案。