2011-08-09 213 views
11

在iPhone上,我以十进制度数获取用户位置,例如:纬度39.470920和经度= -0.373192;这点A.以度为单位的GPS坐标来计算距离

我需要创建一个符合另一GPS坐标,同样在十进制度,点B.然后,从A到计算B和另一点的直线之间的距离(垂直)C.

问题是我与度数值混淆。我希望以米为单位获得结果。需要什么转换?最终公式将如何计算这个样子?

+0

我也有同样的问题,这两个答案都没有解决这个问题。 RabinDev的答案越来越近,但他并没有解决米转换问题的程度。有小费吗? –

回答

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

你的问题也找到一个线(A,B)和C点 我想,如果你3个CLLocations附近之间的最短线路(小于相隔几公里),你可以算一算“好像”坐标是单个平面上的点,并且在C++中使用this,或者使用thisthis,并且仅使用CLLocations“好像”它们是平面上的x和y坐标。

如果你的坐标很远,或者精确的准确性很重要,那么地球的球形很重要,你需要在球面上使用great circle distance和其他几何体。

+0

您好rabindev任何示例示例发送请 – Durga

+0

plus1为超级geeky球形参考。 :-) – eric

28

为什么不使用CLLocation s distanceFromLocation:方法?它会告诉你接收器和另一个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]; 

就这么简单。

+0

嗨Toastor距离计算任何示例发送请 – Durga

+0

完成。这样的事情很容易从参考图书馆学习。我在我的回答中发布了链接,你可能想看看它。 – Toastor