位置坐标无效

时间:2014-01-20 12:13:04

标签: ios objective-c core-location

我有两个坐标:

@property (assign) CLLocationCoordinate2D coordinate1;
@property (assign) CLLocationCoordinate2D coordinate2;

在初始化期间,我将它们设置为无效(以后能够检查它是否已设置):

_coordinate1 = kCLLocationCoordinate2DInvalid;
_coordinate2 = kCLLocationCoordinate2DInvalid;

然后在方法i中检查它们是否有效:

- (void)checkIfValid {
    BOOL coordinatesAreValid = (CLLocationCoordinate2DIsValid(_coordinate1) && CLLocationCoordinate2DIsValid(_coordinate2));
    NSAssert(coordinatesAreValid, @"You didn't set up coordinates!");
}

在我调用方法之前,我通过这种方式设置这些坐标:

[_myclassinstance setCoordinate1:CLLocationCoordinate2DMake(mapView.region.center.longitude, mapView.region.center.latitude)];
[_myclassinstance setCoordinate2:CLLocationCoordinate2DMake(mapView.region.center.longitude, mapView.region.center.latitude)];
[_myclassinstance checkIfValid];

问题是应用声称,坐标错误。我打印过它们,它们似乎没问题:

(lldb) p _coordinate1
(CLLocationCoordinate2D) $1 = {
  latitude = -122.4612387012154
  longitude = 37.72925050874177
}
(lldb) p _coordinate2
(CLLocationCoordinate2D) $2 = {
  latitude = -122.3582012987846
  longitude = 37.84612098703619
}

然而,打印检查不起作用,也断言运行:

p (int)CLLocationCoordinate2DIsValid(_coordinate1)
(int) $3 = 0

有谁知道为什么会这样?欢迎任何帮助:)

2 个答案:

答案 0 :(得分:5)

我不太了解CLLocationCoordinate2DIsValid应该给你什么,但根据文档:

  

如果坐标满足至少一个坐标,则该坐标被视为无效   以下标准:

     
      
  • 其纬度大于90度或小于-90度。
  •   
  • 经度大于180度或小于-180度。
  •   

因此,由于你的纬度低于-90度,我猜这种方法只是在做他们的工作。

修改:您似乎只使用了CLLocationCoordinate2DMake错误的参数。它应该是:

[_myclassinstance setCoordinate1:CLLocationCoordinate2DMake(lattitude, mapView.region.center.longitude)];

交换latitudelongitude

答案 1 :(得分:2)

来自文档:

  

如果坐标满足至少一个坐标,则该坐标被视为无效   以下标准:

     

其纬度大于90度或小于-90度。它的   经度大于180度或小于-180度。

看起来你的纬度是-122度。超出有效范围。