我正在迁移一个现有的应用程序以与 iOS 9 一起使用,除了将 ATS 添加到 info.plist
并使用 MKAnnotationView
而不是 之外没有太多改变>MKPinAnnotationView
用于 map 上的自定义图钉。问题是当开始测试更改时,我注意到位置更新太频繁了,即使我站着不动也是如此。位置管理器的初始化方式没有任何变化。
这是日志的一小部分。
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 是否发生了忽略距离过滤器的更改?
最佳答案
在 locationManager:didUpdateLocations:
方法中,CLLocationManager
的 distanceFilter
属性正在根据速度进行重置,在 iOS 中9
这似乎会触发新的位置更新(返回最后已知的位置),从而在几秒钟内导致数百个新的位置更新。
关于iOS 9 - LocationManager 更新位置过于频繁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786641/