iOS 9 - LocationManager更频繁地更新位置

时间:2015-09-25 16:25:18

标签: ios objective-c core-location cllocationmanager ios9

我正在迁移现有的应用程序以使用iOS 9,除了向info.plist添加ATS并使用MKAnnotationView代替MKPinAnnotationView进行自定义引脚之外,没有太多要更改地图。问题是当开始测试变化时,我注意到位置更新过于频繁,即使我站着不动。初始化位置管理器的方式没有任何改变。

以下是日志的一小部分示例。

2015-09-25 12:16:25.462 MyApp[2009:911066] location: <+39.09040164,-77.52540765> +/- 65.00m (speed -1.00 mps / course -1.00) @ 9/25/15, 12:16:25 PM Eastern Daylight Time 

2015-09-25 12:16:25.464 MyApp[2009:911066] location: <+39.09040164,-77.52540765> +/- 65.00m (speed -1.00 mps / course -1.00) @ 9/25/15, 12:16:25 PM Eastern Daylight Time 

2015-09-25 12:16:25.468 MyApp[2009:911066] location: <+39.09040164,-77.52540765> +/- 65.00m (speed -1.00 mps / course -1.00) @ 9/25/15, 12:16:25 PM Eastern Daylight Time 

2015-09-25 12:16:25.475 MyApp[2009:911066] location: <+39.09040164,-77.52540765> +/- 65.00m (speed -1.00 mps / course -1.00) @ 9/25/15, 12:16:25 PM Eastern Daylight Time 

位置管理器设置如下

    locationManager = [CLLocationManager new];

    locationManager.delegate = self;
    locationManager.distanceFilter = 25.0f;
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

    if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
       [locationManager requestAlwaysAuthorization];
    }
    [locationManager startUpdatingLocation];

我想问题是:我的实现是否有问题,或者Core Location API是否忽略了距离过滤器?

1 个答案:

答案 0 :(得分:2)

var loggingOpts = { reporters: [{ reporter: require('good-console'), events: { request: 'myTag' } }] }; 方法中,locationManager:didUpdateLocations:的{​​{1}}属性正在根据速度重置,在distanceFilter这似乎会触发新的位置更新(返回最后知道的位置),因此在几秒钟内就会产生数百个新的位置更新。