CLLocation接受经度和纬度大于或小于其最小值和最大值

时间:2013-05-22 00:54:03

标签: ios cocoa-touch gps cllocation cllocationdistance

据我所知,最大值和最小值是:
纬度:[ - 90,90]
经度:[ - 180,180]

CLLocation仍接受超出这些限制的值,例如:

 [[CLLocation alloc] initWithLatitude:100.0 longitude:-200.0];

CLLocation的distanceFromLocation:函数仍返回有效距离(尽管我们无法验证这一点,因为坐标超出了限制)。

为什么会这样?
我正在考虑以下几点:
超出这些限制的值对应于外太空 超出这些限制的值对应于其他尺寸 3.超出这些限制的值会重新映射到[-90,90]或[-180,180]范围内的有效值。

2 个答案:

答案 0 :(得分:1)

纬度和经度是一种CLLocationDegrees:

//From CLLocation.h
/*
 *  initWithLatitude:longitude:
 *  
 *  Discussion:
 *    Initialize with the specified latitude and longitude.
 */
- (id)initWithLatitude:(CLLocationDegrees)latitude
    longitude:(CLLocationDegrees)longitude;

如果你进一步观察是一种双重类型:

//From CLLocation.h
/*
 *  CLLocationDegrees
 *  
 *  Discussion:
 *    Type used to represent a latitude or longitude coordinate in degrees under the WGS 84 reference
 *    frame. The degree can be positive (North and East) or negative (South and West).  
 */
typedef double CLLocationDegrees;

what is the range of a double in Objective-C?

因此,我认为没有为纬度和经度提供的值的内置登记。

答案 1 :(得分:1)

以度为单位测量的任何角度总是模360度,因此380的经度在数学上与经度20相同。关于纬度,如果您考虑角度移动到[-90,90]的范围之外图片看起来像是在球体上,然后你会看到纬度是模180.所以我认为你的选择3是正确的答案。