2012-01-27 53 views
1

我發現這個問題與distanceFromLocation函數返回值不準確。請確認我是否做錯了或功能有問題。iphone - distanceFromLocation準確性

CLLocation *locA = [[CLLocation alloc] initWithLatitude:5.321008 longitude:100.290131]; 
CLLocation *locB = [[CLLocation alloc] initWithLatitude:5.321008 longitude:100.290138]; 
CLLocationDistance distance = [locA distanceFromLocation:locB]; 
NSLog(@"distance: %f, locA: %f,%f, locB: %f,%f",distance,locA.coordinate.latitude,locA.coordinate.longitude,locB.coordinate.latitude,locB.coordinate.longitude); 

輸出是:

distance: 0.775644, locA: 5.321008,100.290131, locB: 5.321008,100.290138 

兩個位置都近,應小於10米。但是,該功能返回更大的距離。經過與網站如http://jan.ucc.nau.edu/~cvm/latlongdist.html的距離應該是:

Distance between 5.321008N 100.290131E and 5.321008N 100.290138E is 0.0008 km 

回答

1

你的答案是米,如果你將其轉換爲kilemeters你0.000775 km這是大致相同的。有關更多信息,請參見reference documentation from apple

+0

只是注意到這一點,謝謝指出 – mnazwan 2012-01-27 03:38:42

0

這是一個iPhone問題,而不是一個編碼問題。

由於iPhone手機主要用於做其他事情,因此製造商不會購買重型GPS芯片 - 比如Sirf Star III。這會殺死電池壽命。相反,手機部分依賴於9/11以後針對手機的另一項協議,該協議計算距離手機信號塔的距離,並通過三邊測量獲得近似值。如果芯片組可以找到4顆衛星,則三角測量可以與較弱的GPS芯片組結合使用。結果是,使用GPS功能時,iPhone通常超過40英尺。順便說一句,像Garmin這樣的常規手持GPS設備(不是surveryors差分GPS設備)通常關閉2-3米。

查看維基百科上的差分GPS以獲取更多信息。