我用
创建了位置管理器locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
但是每秒收到一次位置更新。 是否有可能更频繁地获得更新?
我试图在计时器中获取当前位置,但它仍然每秒更新一次。
答案 0 :(得分:1)
这就是我的所作所为:
[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
因此,你真的无法快速更新,不好说。
答案 1 :(得分:1)
根据CLLocation.startUpdatingLocation
文档:
连续几次调用此方法不会自动进行 导致生成新事件。呼叫
stopUpdatingLocation
但是,之间确实会导致下一个新的初始事件发送 你打电话给这种方法的时间。
您可能还必须将distanceFilter
设置为无。但是,你可以想象这两个将有助于通过电池搅拌。
答案 2 :(得分:0)
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
[locationManager startUpdatingLocation];
}
通过这种方式,位置管理可以更频繁地进行更新。因为每次获得更新时,它都会经常请求另一个位置。