我测试下面的代码段。我突然得到一个奇怪的位置(0,0)作为纬度和经度扰乱了我的距离计算。
if (loc != null) {
double currentLatitude = loc.getLatitude();
double currentLongitude = loc.getLongitude();
if (first_time) {
loc.reset();
first_time = false;
}
synchronized (testObject) {
… do some work
previousLat = currentLatitude;
previousLon = currentLongitude;
}
}
我想知道在什么情况下纬度和经度变为0.我也想知道我的代码在哪里错误,因为我得到0纬度和经度。 location.reset()会产生0纬度和经度吗?
答案 0 :(得分:2)
当你重置它时,它当然是0。你为什么那样做?调用reset()时你会期望哪个值? 由android位置服务提供的位置具有精确度设置(getAccuracy())。如果您创建自己的位置对象或重置()它,它将为0。
我之前写的更多信息,说明为什么我总是在计算之前检查有效性:
lat,lon 0,0理论上是一个有效的位置。但在我多年的GPS体验中,我给你tipp:忽略所有位置和坐标(0,0)
这对现实世界的行为没有影响,因为设备不能精确定位在0,0(精确到厘米),即使它可以,也不会超过一秒。
如果你想要你可以初始化你的lat,lon,其特殊值超出了coord范围。但即便如此,你也不能避免其他人的错误。
一般检查位置是否有效,如果你有一个有效的标志,它应该存在于android上。看看水平准确度值。阅读文件如何区分无效的位置。