1

我正在编写一个简单的 Android 应用程序来捕获用户的位置。

我正在使用 FusedLocationAPI 来提供位置。

  mLocationRequest = LocationRequest.create()
            .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
            .setInterval(5000)
            .setFastestInterval(5000);

当用户按下按钮时,应用程序将首先检查最后一个已知位置。如果这不到一分钟并且精度小于 50m,则使用该位置。如果没有,应用程序会请求位置更新,直到接收到精度小于 50m 的位置。然后该应用程序停止请求更新,以帮助节省电池电量。

这在 99% 的情况下都非常有效。然而,在测试中,出现了一种情况,即对同一位置进行了两次读数,但报告的坐标之间的距离为 110m。我试图理解为什么。

读数 #1:在 10:46 拍摄,精度为 36m。

读数 #2:在 13:27 拍摄,精度为 26m。

用户在同一位置(约 2m 内)。我会假设,由于它们的位置处于精度边缘,点之间的距离最多只能为 52m。不知道为什么是110m

我错过了一些明显的东西吗?

4

1 回答 1

1

这不是准确度数字的含义。引用谷歌文档:

我们将准确度定义为 68% 置信度的半径。换句话说,如果你以这个位置的经纬度为中心画一个圆,半径等于精度,那么真实位置在圆内的概率为 68% 。

在统计方面,假设位置误差是随机的,服从正态分布,因此 68% 的置信度圆代表一个标准差。请注意,在实践中,位置误差并不总是遵循如此简单的分布。

http://developer.android.com/reference/android/location/Location.html#getAccuracy

于 2015-03-08T20:03:31.773 回答