请注意我覆盖了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 – 如何在用户的当前位置实现实时更新?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)