如何检查_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
但这也不起作用。
我在这里缺少什么?
答案 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)
您会认为上述答案可行但我最终将纬度/经度存储为浮点数,然后正常比较按预期工作。