即使设置了更高的gps精度,位置也会更新(kCLLocationAccuracyThreeKilometers)

时间:2015-08-18 12:58:28

标签: ios core-location cllocationmanager

我正在开发一种导航应用程序。应用启动后,我将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];
}

1 个答案:

答案 0 :(得分:2)

来自Apple的编程指南:

  

请记住指定一个值   kCLLocationAccuracyThreeKilometers不会阻止该位置   返回更好的数据服务。大多数时候,核心位置   可以返回精度在一百米以内的位置数据   如此。

这意味着 CLLocationManager 上的 desiredAccuracy 属性设置了应用将获得的最低准确度。

根据您的需要,您应该使用 distanceFilter 属性或按 didUpdateLocations 方法按时间(例如每30秒)过滤传入的事件。