2010-08-12 67 views
0

在文檔中說它獲得了一個大致的位置,然後以更精細的更精細的方式進行更新。我有一個按鈕,做如何獲得指定精確度的一次性位置?

[locManager startUpdatingLocation]; 

,然後我實現

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ 
    [locManager stopUpdatingLocation]; 
} 

,並將它獲取路線somwhere。出於某種原因,當我開車到某個地方時,它不會更新位置。我認爲這是因爲它獲得了「一般位置」,然後沒有足夠的時間來獲得準確的讀數。我也有

locManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; 

有什麼想法?只需要一次精確的讀數。難倒。謝謝。

回答

2

快速黑客解決方案:

if (newLocation.horizontalAccuracy > 2*locManager.desiredAccuracy) { 
    return; 
} 

一個更好的解決方案可能是要等到準確性停止提高,平均在過去的5個更新左右。

+0

所以你說在didUpdateLocation方法中放置一個計數器並讓它在停止前進行5次?可能工作。我會試試看。 – marty 2010-08-12 19:29:29

+0

不,您比較五個水平精度值,並等到它停止變好。如果你有良好的GPS接收(你可能沒有,那麼它應該怎麼做?),但是也可能太少。 – 2010-08-13 11:51:36