正如你可能知道,這是初始化和啓動位置管理器代碼:
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
將不會被調用。你可以做的唯一的事情就是設置distanceFilter
和desiredAccuracy
就像我在例子中給你的準確度最高。
更新
使用kCLLocationAccuracyBest代替kCLLocationAccuracyNearestTenMeters爲了更準確。
感謝您的回答!我無法立即想到修補userLocation以便能夠正確測試的方法。 我只是在那裏實施距離警報器,讓別人來測試它。它實際上比使用時間間隔更好。 準確性=最好,過濾器= 10m是同一件事,如果不是,爲什麼不呢? (如果你知道。) – 2010-08-03 08:34:12
你說得對,kCLLocationAccuracyBest比較好。很確定kCLDistanceFilterNone是最好的。文檔說明使用kCLDistanceFilterNone時的所有通知。 – 2010-08-03 08:50:20
嗯,實際上我的意思是說,移動10米是一個很好的標準,可以頻繁更新,而不會太頻繁地獲取它們(或者靜靜地站立,如果兩個都設置爲'最好/沒有',你會得到什麼?) 因此,我只是想知道「準確度=最佳+過濾器= 10m」和「準確度= 10m +過濾器=無」哪一個給出了最恰當的結果,就是這樣。 :) – 2010-08-03 09:33:23