一次我创建的位置经理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