我正在开发一种导航应用程序。应用启动后,我将CLLocationManager
设置为最高可用准确度kCLLocationAccuracyThreeKilometers
。基于该值,我预计在将近3公里之后会更新位置。但是,我每隔一秒就会更新一次位置didUpdateLocations
。例如,如果我将distanceFilter
设置为10(米),则不会每秒调用didUpdateLocations
委托方法。没有将desiredAccuracy
属性设置为" configure" GPS频率?
- (void)initAndStartCoreLocation
{
self.locationManager = [[CLLocationManager alloc] init];
// self.locationManager.distanceFilter = 10;
self.locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers;
self.locationManager.pausesLocationUpdatesAutomatically = YES;
self.locationManager.activityType = CLActivityTypeAutomotiveNavigation;
self.locationManager.delegate = self;
if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[self.locationManager requestAlwaysAuthorization];
}
[self.locationManager startUpdatingLocation];
}
答案 0 :(得分:2)
来自Apple的编程指南:
请记住指定一个值 kCLLocationAccuracyThreeKilometers不会阻止该位置 返回更好的数据服务。大多数时候,核心位置 可以返回精度在一百米以内的位置数据 如此。
这意味着 CLLocationManager 上的 desiredAccuracy 属性设置了应用将获得的最低准确度。
根据您的需要,您应该使用 distanceFilter 属性或按 didUpdateLocations 方法按时间(例如每30秒)过滤传入的事件。