gpt4 book ai didi

android - Location#distanceTo(Location) 是否考虑了 Location#getAccuracy()?

转载 作者:行者123 更新时间:2023-11-29 15:26:24 32 4
gpt4 key购买 nike

我想写一个LocationListener,它把最近最精确的位置作为它的位置。我打算在我的 LocationListener 中使用此代码:

    @Override
public void onLocationChanged(Location location) {
if(location.distanceTo(mLocation)>location.getAccuracy()){
mLocation = location;
}
}

如果用户的旧位置新位置指示的“可能位置”圈内,我打算这样做是更新位置。因此,例如,如果我们上次测量的是 GPS 信号,而新的测量是手机信号塔,而旧位置在手机信号塔的范围内,我们就不会更新;另一方面,如果手机信号塔距离足够远,我们就知道用户已经移动并记录下来。

但是,distanceTo(Location) 函数声明它返回位置之间的近似 距离(以米为单位)。它是否已经考虑到准确性?它会给我一个足够精确的数字让我以这种方式使用吗?

最佳答案

简短的回答是否定的,Location.distanceTo(Location) 在测量距离时不考虑 Location.getAccuracy() 值。

下面是来自 Android 平台的实际代码,用于计算 Location.distanceTo(Location) 的距离: https://github.com/android/platform_frameworks_base/blob/master/location/java/android/location/Location.java#L272

它根据给定的纬度和经度(不考虑精度)使用 Vincenty 的逆公式(http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf - 第 4 节)。

至于您更新“真实”用户位置的方法是否“足够精确”,这实际上取决于 GPS 灵敏度、准确度和精确度,这在不同设备之间可能会有很大差异。

Location.getAccuracy() 的准确度估计值也可能因 OEM 的不同而有很大差异,而且我见过的设备通常会高估准确度(即,设备给出的准确度值大于真正的准确性)而不是低估准确性。

您可能想查看我创建的“GPS 基准测试”(http://www.gpsbenchmark.com/) 应用程序,它有助于在 Android 设备上快速对位置提供程序的准确性(GPS 和网络)以及“估计准确性”的准确性进行基准测试。我还根据一些 Java ME 设备的 GPS 基准测试结果与人合着了一篇关于该主题的论文 ( http://journals.cambridge.org/repo_A82eaJIy ),其中大部分 Material 也与 Android 相关。

关于android - Location#distanceTo(Location) 是否考虑了 Location#getAccuracy()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354301/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com