3

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

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

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

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

为什么会这样?
我的思路如下:
1. 超出这些限制的值对应于外层空间
2. 超出这些限制的值对应于其他维度
3. 超出这些限制的值重新映射到 [-90, 90] 范围内的有效值或 [-180, 180]。

4

2 回答 2

1

任何以度为单位的角度总是以 360 为模,因此 380 的经度在数学上与 20 的经度相同。关于纬度,如果您考虑在图片的外观方面移动超出 [-90,90] 范围的角度就像在球体上一样,那么您会看到纬度是模 180。所以我认为您的选择 3 是正确的答案。

于 2013-05-22T08:04:53.710 回答
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;

Objective-C中双精度的范围是多少?

因此,我相信没有内置的纬度和经度值的签入。

于 2013-05-22T01:08:41.553 回答