1

如何检查 _mapView.userLocation.location.coordinate.latitude 是否等于 0?

纬度是一种双精度typedef double CLLocationDegrees;

我尝试将它与 0、-0.000000、0.000000 和 0.00 进行比较,但没有运气。

我试过把它转换成这样的字符串

NSLog(@" lat %@", ([NSString stringWithFormat:@"%f", _mapView.userLocation.location.coordinate.latitude] == @"0.000000") ? @"yes" : @"NO" );
string  0.000000 
lat NO

但这也不起作用。

我在这里想念什么?

4

4 回答 4

2

它被存储为一个所以简单的数字比较就足够了:

if (coordinate.latitude == 0)

但是,如果您处理的是真实位置,则它实际上不太可能为 0,因此您可能需要先四舍五入该值。

从评论看来,您假设坐标 0,0 表示位置错误。不是这种情况。如果坐标无效,则horizontalAccuracy属性将为负数。这是检查无效坐标的正确方法:

if (coordinate.horizontalAccuracy < 0)
于 2012-05-20T16:20:08.417 回答
1

我不确定为什么,但如果我将引用存储为浮点数,它会按预期工作。

float lat = _mapView.userLocation.location.coordinate.latitude;
float lon = _mapView.userLocation.location.coordinate.longitude;  

if (lat == 0 || lon == 0) {
...
于 2012-05-20T18:13:13.660 回答
1

使用 swift,但您可以使用类别的objective-c 执行相同的操作:

extension CLLocation {

    func isZero() -> Bool {
        return self.coordinate.latitude == 0.0 && self.coordinate.longitude == 0.0
    }

}
于 2015-05-01T15:52:59.823 回答
0

您会认为上述答案会起作用,但我最终将纬度/经度存储为浮点数,然后正常比较按预期工作。

于 2012-05-26T17:48:44.370 回答