一次我創建的位置經理iOS的位置管理器更新更多的時候則在第二
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
但每秒接收一次位置更新。 是否有可能更頻繁地獲取更新?
我試圖在計時器中獲取當前位置,但它仍然每秒更新一次。
一次我創建的位置經理iOS的位置管理器更新更多的時候則在第二
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
但每秒接收一次位置更新。 是否有可能更頻繁地獲取更新?
我試圖在計時器中獲取當前位置,但它仍然每秒更新一次。
這裏就是我所做的:
[self pingLocation];//viewDidLoad
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
[manager stopUpdatingLocation];
manager.delegate = nil;
self.currentLocation = (CLLocation *)[locations lastObject];
}
- (void) pingLocation {
[locationManager startUpdatingLocation];
locationManager.delegate = self;
[self performSelector:@selector(pingLocation) withObject:nil afterDelay:0.5];//change to whatever you want
}
這似乎給了我相當不錯的結果,並可以使它比更新每秒一次。然而,它耗盡電池非常劇烈,並不是最佳做法。我會問自己:你爲什麼要這樣?你真的需要每秒更新一次嗎?
編輯:我剛剛再次測試這一點,我相信儘管它每半秒更新一次,但它並不是真的。例如:
30.00000,60.00000
30.00000,60.00000
30.00032,60.00056
30.00032,60.00056
因此,你真的不能比更新第二快,遺憾地說。
按照CLLocation.startUpdatingLocation
文檔:
相繼調用此方法多次確實產生不自動 結果在新的事件。然而,在 之間調用
stopUpdatingLocation
確實會導致在您調用此方法的下一個 時發送新的初始事件。
您可能還必須將distanceFilter
設置爲無。但是,你可以想象這兩個將幫助通過電池流失。
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
[locationManager startUpdatingLocation];
}
由此,位置管理得到更新更頻繁。因爲每次更新時都會經常請求另一個位置。
不幸的是,看起來你是對的。我用計時器重新創建測試 - 結果相同。試圖更經常地向經理詢問當前位置,而不是爲更新而努力 - 同樣的。這似乎是奇怪的做法,因爲在高速位置可能會發生巨大變化。 我的目標是測量10米的主機距離,所以時間間隔很重要。 – famer