Viv*_*ive 4 objective-c core-location ios
我有两个坐标:
@property (assign) CLLocationCoordinate2D coordinate1;
@property (assign) CLLocationCoordinate2D coordinate2;
Run Code Online (Sandbox Code Playgroud)
在初始化期间,我将它们设置为无效(以后能够检查它是否已设置):
_coordinate1 = kCLLocationCoordinate2DInvalid;
_coordinate2 = kCLLocationCoordinate2DInvalid;
Run Code Online (Sandbox Code Playgroud)
然后在方法中检查它们是否有效:
- (void)checkIfValid {
BOOL coordinatesAreValid = (CLLocationCoordinate2DIsValid(_coordinate1) && CLLocationCoordinate2DIsValid(_coordinate2));
NSAssert(coordinatesAreValid, @"You didn't set up coordinates!");
}
Run Code Online (Sandbox Code Playgroud)
在我调用方法之前,我通过这种方式设置这些坐标:
[_myclassinstance setCoordinate1:CLLocationCoordinate2DMake(mapView.region.center.longitude, mapView.region.center.latitude)];
[_myclassinstance setCoordinate2:CLLocationCoordinate2DMake(mapView.region.center.longitude, mapView.region.center.latitude)];
[_myclassinstance checkIfValid];
Run Code Online (Sandbox Code Playgroud)
问题是应用声称,坐标是错误的.我打印过它们,它们似乎没问题:
(lldb) p _coordinate1
(CLLocationCoordinate2D) $1 = {
latitude = -122.4612387012154
longitude = 37.72925050874177
}
(lldb) p _coordinate2
(CLLocationCoordinate2D) $2 = {
latitude = -122.3582012987846
longitude = 37.84612098703619
}
Run Code Online (Sandbox Code Playgroud)
但是打印检查不起作用,也断言运行:
p (int)CLLocationCoordinate2DIsValid(_coordinate1)
(int) $3 = 0
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?欢迎任何帮助:)
我不太了解CLLocationCoordinate2DIsValid应该给你什么,但根据文件:
如果坐标满足以下至少一个条件,则该坐标被视为无效:
- 其纬度大于90度或小于-90度.
- 它的经度大于180度或小于-180度.
因此,由于你的纬度低于-90度,我想这种方法只是在做自己的工作.
编辑:您似乎只使用CLLocationCoordinate2DMake了错误的参数.它应该是:
[_myclassinstance setCoordinate1:CLLocationCoordinate2DMake(lattitude, mapView.region.center.longitude)];
Run Code Online (Sandbox Code Playgroud)
交换latitude和longitude.
| 归档时间: |
|
| 查看次数: |
2356 次 |
| 最近记录: |