CLLocation纬度是否等于零?

时间:2012-05-20 16:04:37

标签: objective-c mkmapview

如何检查_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 个答案:

答案 0 :(得分:2)

它存储为double这么简单的数字比较就足够了:

if (coordinate.latitude == 0)

但是,如果您正在处理实际位置,那么它实际上不太可能为0,因此您可能需要先对该值进行舍入。

从评论看起来你假设坐标为0,0表示该位置有错误。不是这种情况。如果坐标无效,则为horizontalAccuracy property will be negative。这是检查无效坐标的正确方法:

if (coordinate.horizontalAccuracy < 0)

答案 1 :(得分:1)

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

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

if (lat == 0 || lon == 0) {
...

答案 2 :(得分:1)

使用swift,但你可以使用类别的objective-c:

extension CLLocation {

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

}

答案 3 :(得分:0)

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