0

我测试下面的代码片段。我突然得到一个奇怪的位置(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 纬度和经度吗?

4

1 回答 1

2

当然,当你重置它时它是0。你为什么这样做?调用reset() 时您期望的值是多少?由 android 位置服务提供的位置具有准确度集 (getAccuracy())。如果您创建自己的位置对象或 reset() 它,它将为 0。

我之前写过的更多信息显示了为什么我总是在计算之前检查有效性:
lat,lon 0,0 理论上是一个有效的位置。但在我多年的 GPS 经验中,我给你提示:忽略坐标 (0,0) 的所有位置。
这对现实世界的行为没有影响,因为设备不能精确定位在 0,0(以厘米精度),即使可以,也不超过一秒。

如果你愿意,你可以用坐标范围之外的特殊值来初始化你的纬度,经度。但即便如此,你也不能从其他人的错误中解脱出来。

通常检查位置是否有效,如果你有一个有效的标志,它应该存在于android上。查看水平精度值。阅读文档如何区分无效位置。

于 2013-03-27T10:49:40.437 回答