我想写一个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和网络),以及“估计精度”的精度。 我还共同撰写了一篇关于这个话题( http://journals.cambridge.org/repo_A82eaJIy基于GPS的标杆成绩)从一些Java ME设备和大部分材料也与Android相关。
文章来源: Does Location#distanceTo(Location) take Location#getAccuracy() into account?