2011-11-18 66 views
0

我有一個CLLocationCoordinate2D(c1)和一個CLLocation(L1),所以我有緯度/經度值對於每個點,我可以使用計算它們之間米的距離:Mapkit一行點的座標

[c1 distanceFromLocation:l1] 

我怎樣才能找到一個點(C2)接近100米L1比C1的座標(沿着相同的軸承)?

enter image description here

我已經使用利用它基本TRIG計算如下:

  1. 使用緯度和經度差,計算
  2. 使用的距離之間的比率與cl斜邊和角而距離C2得到一個三角形的斜邊在C2結束
  3. 使用COS和罪惡計算C2
  4. 的經度和緯度

但這似乎的做這件事,因爲它沒有考慮到曲率哈克的方式,似乎是使用經度和緯度,他們不應該被使用的方式。它似乎在短距離上工作。

+0

如何準確,你想是什麼? 100米加或減幾英寸,或100米加或減幾碼? –

+0

當然不是英寸。它需要在10米到10英里之間的距離上精確到幾米。 – Undistraction

+1

在我看來,你這樣做的方式是正確的;我不相信有CLLocation的本地方法來實現你想要的。你這樣做的方式有什麼問題? –

回答

1

了一些研究之後,我發現了一個基本公式爲地球表面上計算兩個點之間的彎曲距離:

dlon = lon2 - lon1 
dlat = lat2 - lat1 
a = { sin(dlat/2) }^2 + [ cos(lat1) * cos(lat2) * { sin(dlon/2) }^2 ] 
c = 2 * arcsin(min(1,sqrt(a))) 
d = R * c 
+0

有趣。感謝您的挖掘。 – Undistraction

+0

我還沒有嘗試過在代碼中實現它,但它似乎是準確的。我希望它適合你,或者至少讓你朝着正確的方向發展! –