2010-08-03 48 views
3

我沒有使用它來獲取駕車路線或類似信息。我有一些註釋,並且當用戶在其中一個附近時需要觸發器,所以我可以提醒用戶。如何從用戶位置每隔4-5秒獲取一次距離

看起來didUpdateToLocation每startUpdatingLocation調用只調用一次?至少當我在該方法中使用NSLog時,我只能在控制檯中獲得一行。不,我沒有用iphone走動。

所以:設置userLocation的連續監測並獲得「回調」(3-4秒過去或用戶移動了10米時)的正確方法是什麼?

回答

4

正如你可能知道,這是初始化和啓動位置管理器代碼:

locationManager = [[CLLocationManager alloc] init]; 
locationManager.delegate = self; 
locationManager.distanceFilter = kCLDistanceFilterNone; 
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; 
[locationManager startUpdatingLocation]; 

並實行didUpdateToLocation這樣的:

- (void) locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*) oldLocation 
{ 
    // This will be called every time the device has any new location information. 
} 

系統將每次打電話didUpdateToLocation該位置有更新。如果系統未檢測到位置變化didUpdateToLocation將不會被調用。你可以做的唯一的事情就是設置distanceFilterdesiredAccuracy就像我在例子中給你的準確度最高。

更新

使用kCLLocationAccuracyBest代替kCLLocationAccuracyNearestTenMeters爲了更準確。

+0

感謝您的回答!我無法立即想到修補userLocation以便能夠正確測試的方法。 我只是在那裏實施距離警報器,讓別人來測試它。它實際上比使用時間間隔更好。 準確性=最好,過濾器= 10m是同一件事,如果不是,爲什麼不呢? (如果你知道。) – 2010-08-03 08:34:12

+0

你說得對,kCLLocationAccuracyBest比較好。很確定kCLDistanceFilterNone是最好的。文檔說明使用kCLDistanceFilterNone時的所有通知。 – 2010-08-03 08:50:20

+0

嗯,實際上我的意思是說,移動10米是一個很好的標準,可以頻繁更新,而不會太頻繁地獲取它們(或者靜靜地站立,如果兩個都設置爲'最好/沒有',你會得到什麼?) 因此,我只是想知道「準確度=最佳+過濾器= 10m」和「準確度= 10m +過濾器=無」哪一個給出了最恰當的結果,就是這樣。 :) – 2010-08-03 09:33:23

相關問題