2011-08-09 385 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