GPS坐标以度为单位计算距离

Dur*_*rga 11 iphone gps map ios4

在iPhone上,我以十进制度获取用户的位置,例如:北纬39.470920和经度= -0.373192; 那是A点.

我需要创建一个具有另一个GPS坐标的线,也是十进制度,B点.然后,计算从A到B的线与另一个点C之间的距离(垂直).

问题是我对度数的值感到困惑.我希望得到米的结果.转换需要什么?计算这个的最终公式怎么样?

Toa*_*tor 29

你为什么不使用CLLocationdistanceFromLocation:方法?它会告诉您接收器与另一个CLLocation之间的精确距离.

CLLocation *locationA = [[CLLocation alloc] initWithLatitude:12.123456 longitude:12.123456];
CLLocation *locationB = [[CLLocation alloc] initWithLatitude:21.654321 longitude:21.654321];

CLLocationDistance distanceInMeters = [locationA distanceFromLocation:locationB];

// CLLocation is aka double

[locationA release];
[locationB release];
Run Code Online (Sandbox Code Playgroud)

就这么简单.


Rab*_*Dev 1

  • (CLLocationDistance)distanceFromLocation:(const CLLocation *)location 是获取从一个 CLLocation 到另一个 CLLocation 的距离的方法。

你的问题还在于找到线 (A,B) 和点 C 之间的最短线。我想如果你的 3 个 CLLocations 很近(相距不到几公里),你可以进行数学计算,“就好像”坐标是单个平面上的点,并在 C++ 中使用它,或者这个这个,然后仅使用 CLLocations,“就好像”它们是平面上的 x 和 y 坐标。

如果您的坐标很远,或者精确度很重要,那么地球的球形就很重要,并且您需要使用大圆距离和球体表面的其他几何形状来进行操作。