android – 如何在用户的当前位置实现实时更新?

android – 如何在用户的当前位置实现实时更新?,第1张

概述我正在使用MyLocationOverlay来显示当前位置.但是,该位置需要一段时间才能更新.我想在iPhone上实现类似“跟我来”的功能,其中用户的位置也在用户移动时移动.如何使MyLocationOverlay的标记在其位置上执行实时更新? 请注意我覆盖了draw()和drawMyLocation(),因为我需要绘制一个自定义标记. 我当前的代码如下所示:(我的代码的问题是标记不会随用户一起移 我正在使用MyLocationOverlay来显示当前位置.但是,该位置需要一段时间才能更新.我想在iPhone上实现类似“跟我来”的功能,其中用户的位置也在用户移动时移动.如何使MyLocationOverlay的标记在其位置上执行实时更新?

请注意我覆盖了draw()和drawMyLocation(),因为我需要绘制一个自定义标记.

我当前的代码如下所示:(我的代码的问题是标记不会随用户一起移动.因为在调用onLocationChanged之前需要一段时间,标记才会突然从一个地方跳到另一个地方.)

@OverrIDepublic synchronized voID onLocationChanged(Location location){    if (location != null && mapController != null)    {        //Recenter map based on current location        mapController.animateto(new GeoPoint((int) (location.getLatitude() * 1e6),(int) (location.getLongitude() * 1e6)));    }    super.onLocationChanged(location);}
解决方法 您可以给位置管理器提供最小间隔,以便在调用该方法之间等待,但是并不是100%准确地记住该时间间隔(请参阅 LocationManager.requestLocationUpdates()的说明).可能更短,可能更长 – 因为,例如它可能是阴天,gps芯片将无法像您希望的那样定期更新位置.

没有正确的方法可以克服这个问题 – 定位服务总是存在不完善之处.我使用的每个位置感知应用程序都会不时“挂起”标记因为gps芯片丢失修复片刻.

你可以做的唯一一点就是要记住移动的速度,并且应该gps丢失修复,根据用户以相同的速度向gps移动的假设,给出地图标记假更新有一个修复.但是只对2-5跳过的实际更新这样做才有意义(只是为了平滑修复丢失几秒钟的情况).

UPD为此,您可以实现一种代理位置监听器,它将严格按照您指定的间隔更新您的标记,例如:每200毫秒,并根据它的存储位置这样做.并且存储的位置可以由真实位置监听器异步更新.位置对象有提供数据的修复时间(参见getTime()方法),您可以使用它来确定是否仍应“预测”下一个标记移动或位置是否足够放弃并通知用户gps没有线索在哪里他们是 :)

总结

以上是内存溢出为你收集整理的android – 如何在用户的当前位置实现实时更新?全部内容,希望文章能够帮你解决android – 如何在用户的当前位置实现实时更新?所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1126501.html

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

发表评论

登录后才能评论

评论列表(0条)

保存