iOS 9-LocationManager更新位置过于频繁

iOS 9-LocationManager更新位置过于频繁,ios,objective-c,core-location,cllocationmanager,ios9,Ios,Objective C,Core Location,Cllocationmanager,Ios9,我正在将一个现有的应用程序迁移到iOS 9上,没有太多的更改,只是将ATS添加到info.plist中,并使用MKAnnotationView而不是MKPinAnnotationView在地图上定制PIN。问题是在开始测试更改时,我注意到位置更新过于频繁,即使在我站着不动的时候。位置管理器的初始化方式没有任何更改 下面是日志的一个小样本 2015-09-25 12:16:25.462 MyApp[2009:911066] location: <+39.09040164,-77.525407

我正在将一个现有的应用程序迁移到iOS 9上,没有太多的更改,只是将ATS添加到
info.plist
中,并使用
MKAnnotationView
而不是
MKPinAnnotationView
在地图上定制PIN。问题是在开始测试更改时,我注意到位置更新过于频繁,即使在我站着不动的时候。位置管理器的初始化方式没有任何更改

下面是日志的一个小样本

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 

我想问题是:我的实现是否有问题,或者核心位置API中是否有忽略距离过滤器的更改?

locationManager:didUpdateLocations:
方法中,
CLLocationManager
distanceFilter
属性正在根据速度重置,在
iOS 9
中,这似乎会触发一个新的位置更新(返回上一个已知位置),从而在几秒钟内产生数百个新位置更新。

是否将
CLLocationManager
上的
pauseslocationupdates属性设置为
YES
?如果设置为
YES
,则在位置数据不太可能更改的情况下,通过禁用位置更新有助于提高电池寿命。@MatteoPacini在代码中的任何一点上都不会设置为
NO
,默认值为
YES
。我将尝试显式地将其设置为
YES
。谢谢。@MatteoPacini我试过了,没什么区别。谢谢,真有趣。一旦你有能力,你应该接受你自己的答案,让其他读者知道问题已经解决。我看到了同样的结果,但我不会在启动locationmanager后更改任何内容。你能看一看吗?@sjoerdperforfs我想我们与
CLLocationManager
的问题有点不同,我的问题不是位置数据不正确,而是更新频率极高。
    locationManager = [CLLocationManager new];

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

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