【发布时间】:2019-08-20 03:49:17
【问题描述】:
我正在使用FusedLocationProviderClient 在前台服务中获取位置更新。经过几天的测试和观察,我发现错误的位置与我的实际位置相距约 4 公里,类似于 this,但LocationResult 的精度为 24 米。这怎么可能?
如果精度在 4 公里左右,则可以消除。此行为不会经常发生,但在 10 个设备中至少有 4 个发生。当我计算行进距离时,这成为一个问题。
我可以判断它不是缓存位置,因为我过去每天都会关闭和打开位置服务。 (根据docs,关闭定位服务会清除缓存位置。)
知道为什么它给出错误的位置以及如何消除它吗?还要在不关闭定位服务的情况下清除缓存位置?
【问题讨论】:
-
请告诉我们您尝试了什么并最好用代码向我们展示
-
@kkarakk,我需要从设备获取连续的位置更新,以便计算行进距离并使用折线在 Google 地图中显示用户行进路径。一切正常。我面临的唯一问题是很少有位置是错误的,类似于这个 - user-images.githubusercontent.com/352175/…
-
“知道为什么它给出了错误的位置......” 也许它们是基于网络的位置(?)如果 GPS 定位暂时丢失(?)那么你可以检查提供者并忽略它们。 “...以及如何消除它?” 只接受基于 GPS 的位置并实施某种过滤。在谈到 GPS 时,经常会提到“卡尔曼滤波”。我想固件已经做了一些。或者,“虚假”位置可能会根据与先前位置的距离以及用户可能实际行驶的合理预期最大速度而被拒绝。 4公里/秒不太可能发生。 :)
-
@Joshua 看一眼您的内容,我可以判断那些不正确的位置是设备失去 gps 连接时的手机信号塔/wifi 位置。我认为您需要远离 fusedlocationproviderclient 并使用非 google play 位置解决方案(位置侦听器),这样您就可以仅请求 gps 位置并忽略不准确的 wifi/celltower 数据。 fusedlocationprovider 不提供精细粒度控制,您必须在后端进行卡尔曼过滤器
-
@kkarakk,是的,您的回答很有帮助。接受:)
标签: android location android-fusedlocation fusedlocationproviderclient