为啥 FusedLocationProviderApi 从不报告精度优于 10m?这有记录吗?
Posted
技术标签:
【中文标题】为啥 FusedLocationProviderApi 从不报告精度优于 10m?这有记录吗?【英文标题】:Why does FusedLocationProviderApi never report accuracy better than 10m? Is this documented?为什么 FusedLocationProviderApi 从不报告精度优于 10m?这有记录吗? 【发布时间】:2018-08-23 15:49:18 【问题描述】:直接使用LocationManager
的数据收集应用已更新为使用FusedLocationProviderApi
。使用LocationManager
,大多数设备在收集位置时可以快速报告 5m 或更好的精度。使用FusedLocationProviderApi
,有史以来报告的最佳精度为 10m。
我刚刚安装了一个位置演示应用程序并看到了相同的行为 (https://github.com/will-quast/android-location-demo)。在 Fused Location 活动中,如果我只显示 GPS 位置,精度会随着我获得更好的天空视野而改变,它可以下降到 2m。如果我只显示融合,我会得到与LocationManager
报告的相同点。这是有道理的——我将 Android 设置为仅将 GPS 用于定位,优先级设置为PRIORITY_HIGH_ACCURACY
,所以我希望这两点始终相同。但是使用融合的提供者显示的最佳精度是 10m。
为什么融合的提供者从不报告小于 10m 的精度?这是否记录在某处?有什么办法可以绕过它,还是应该在需要精确感时始终使用LocationManager
?
FusedLocationProviderClient
目前不是一个选项,因为它需要对 Google Play 进行更新,并且此应用程序用于 Google Play 更新过大的资源受限区域。 知道它是否确实报告了低于 10m 的精度仍然很有用。它也永远不会报告低于 10m 的精度,而 Android 设置设置为仅使用 GPS。
编辑 4/9 - 相关问题:
Dramatic shift in location accuracy distribution starting February 15 Wierd and very unexpected issue with location.getAccuracy() FusedLocationApi Performance Issue: Accuracy seems capped at 10.0 meters Cordova geolocation accuracy gets capped at 10 meters【问题讨论】:
如果你不介意可以添加一些代码吗? @G.Dator 见github.com/will-quast/android-location-demo/blob/master/…和github.com/opendatakit/collect/blob/… @Hélène Martin:你得到了什么准确度? @jiteshmohite 使用FusedLocationProviderAPI
我得到了 10m 的精度。使用LocationManager
,我得到了 2m 的精度。
我在这里回答了类似的问题***.com/questions/49348489/…
【参考方案1】:
没有。只有尽力而为。不保证。
如果您拥有良好的设备,并且位于拥有大量 Android 用户的位置。 (例如SSID数据库会变得更准确),它可以达到2-3m的精度。
否则,混合不同来源的位置信息会产生较大的方差,从而导致准确性较低。
例如 源 A 精度为 5m。 B源精度为15m。
单独使用 Source A 当然精度是 5m。 但是如果混合A和B,精度当然会>= 5m。 (考虑为干净的数据添加噪声)
【讨论】:
谢谢,这确实有些道理,尽管令人惊讶的是,鉴于高精度源它仍然混合,尤其是当 Android 设置说只使用 GPS 时。当设备设置为仅使用 GPS 时,10m 的限制似乎很难。你知道为什么吗?我找不到FusedLocationProviderApi
的来源,有吗?
即使 A 和 B 的准确率相同,如果 A 和 B 告诉你的结果不同怎么办?它会给你一个较低准确度的答案。 (可能以 A 和 B 的平均值为中心的较大半径)您是否尝试关闭 wifi 并移除 sim 卡? Google Play 服务不是开源的。
你说得对,如果有两个来源可用,那么行为是有意义的。如果 Android 设置仅设置为 GPS,我希望它使用唯一的来源!关闭 wifi 并忽略 SIM 卡会导致相同的行为(在 10m 精度下硬停止)。我没有意识到 Play Services 不是开源的,谢谢。
我们遇到了同样的问题,请参阅***.com/questions/49348489/…【参考方案2】:
这已被确认为 Google Play 服务错误on the Google issue tracker。预计 Play Services 13.4.0 的修复程序允许精度低至 3m。目前尚不清楚为什么它会被限制在 3m,而不是使用原始位置源报告的精度。
【讨论】:
以上是关于为啥 FusedLocationProviderApi 从不报告精度优于 10m?这有记录吗?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?