2013-09-22 36 views
2

我有一個位置的經緯度。有沒有一種方法可以在該點以南100米處計算?如何計算目標C中位置以南100米處?

我正在爲Objective-C for iOS7平臺編寫代碼。

我正在尋找一些有效實現這個技巧的功能。

我試過Haversine公式(下面給出)。但是隨着Haversine認爲地球是一個球體,計算變得越來越複雜,價值也不準確。

a = sin²((φ1-φ2)/2) + cos(φ1)*cos(φ2)*sin²((λ1-λ2)/2) 
c = 2*atan2(√a, √(1−a)) 
distance = R*c 
(φ is latitude, λ is longitude, R is Earth’s = 6,371km) 
+0

在100米的尺度上,地球不是球體的事實幾乎沒有影響。當然,錯誤將遠遠小於手機中GPS接收器的準確度。 – JeremyP

+0

我必須在我的程序中計算出數千個這樣的計算結果。組合錯誤很大,需要刪除。 – user2734323

回答

1

我想出了一個辦法來做到這一點。想到共享相同的......使用MKMapPointForCoordinate

  1. 座標轉換成MKMapPoint

  2. 然後加上或減去步驟1中得到的MKMapPoin t的x或y座標。使用MKMapPointMake執行此操作。

  3. MKMapPoint轉換回CLLocationCoordinate2D。使用MKCoordinateForMapPoint執行此操作。

2

經度表示位置東/西,所以它將保持不變。

將緯度表示爲有符號的度數,赤道以北爲正數,赤道以南爲負數。然後往南走100米,你想去南面對應100米的度數。地球的周長是40075公里,即40075000米,代表360度。所以100米對應於100/40075000 * 360或約0.0008983度。因此,從緯度減去0.0008983度以獲得答案。

上面假設地球是球形的。實際上它是一個橢球體,如果你想正確地考慮這個問題,答案會更復雜,但是對於大多數目的而言,假定一個球體的計算應該足夠好。