java-相机停止移动一会儿后更新Google Maps

java-相机停止移动一会儿后更新Google Maps,第1张

概述我仍然不相信关于SO的任何问题,所以请随时向我指出.我正在使用显示多个标记的GoogleMaps实现一个应用程序.我想使其动态,以便仅绘制可见的标记.为此,我希望能够知道地图何时完全停止,然后等待几秒钟,以便当用户可能仍在移动地图时,我不会弄乱地图,然后清除标记并绘制新标记.如果

我仍然不相信关于SO的任何问题,所以请随时向我指出.

我正在使用显示多个标记的Google Maps实现一个应用程序.我想使其动态,以便仅绘制可见的标记.为此,我希望能够知道地图何时完全停止,然后等待几秒钟,以便当用户可能仍在移动地图时,我不会弄乱地图,然后清除标记并绘制新标记.如果用户在计时器触发之前移动,则必须取消,然后再次开始计数.

到目前为止,我成功地使用onCamerachangelistener停止了动画播放时的摄影机更改,尽管it’s definition指定它仍可能在动画中期被调用.这是正确的方法吗?

第二个问题是关于计时器.我当前的实现如下:

map.setonCamerachangelistener(new OnCamerachangelistener() {    public voID onCameraChange(Cameraposition position) {        refresher.schedule(new refreshMapData(), 2000);    }});

实际更新必要标记的计时器就是这个:

class refreshMapData extends TimerTask{    public voID run() {        map.clear();        for ( ... ) {            map.addMarker( ... );        }    }}

哪个显然引发了“不在主线程上”异常,并引出了下一个问题:此问题的解决方法是什么?如果不允许从主线程之外进行 *** 作,如何使用计时器修改Google Map的值?

编辑:关于第一个问题,我想我只需要比较自上次以来位置是否已发生变化,就可以了.只需要解决计时器更新问题.

解决方法:

您最好使用Handler.这不会创建不必要的其他线程.

只需在onCameraChange中调用它:

handler.removeMessages(MSG_ID);handler.sendEmptyMessageDelayed(MSG_ID, 2000);

然后在handleMessage中完成您的工作.

如果仅显示几个标记,为什么需要动态显示?可见区域外的标记没有变得很慢.您清除并添加标记的代码可能会使速度变慢.

如果要显示数千个标记,请尝试Android Maps Extensions,它仅添加了内置的可见标记.

总结

以上是内存溢出为你收集整理的java-相机停止移动一会儿后更新Google Maps全部内容,希望文章能够帮你解决java-相机停止移动一会儿后更新Google Maps所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存