didUpdateLocations 总是用不同的坐标多次调用

Posted

技术标签:

【中文标题】didUpdateLocations 总是用不同的坐标多次调用【英文标题】:didUpdateLocations always be called several times with different coordinates 【发布时间】:2014-07-30 08:56:45 【问题描述】:

所以,我的应用需要每 15 米捕获一次位置。

在 viewDidLoad 中

NSOperationQueue.mainQueue().addOperationWithBlock 
    self.manager = CLLocationManager()
    self.manager.delegate = self
    self.manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
    self.manager.distanceFilter = 15.0
    self.manager.headingFilter = 10
    self.manager.startUpdatingLocation()

第一次(我不动),在

func locationManager(manager:CLLocationManager, didUpdateLocations locations:[AnyObject])

我得到(真实示例): *.1488241293991 *.5997807433053

第二次: *.1489010891664 *.599624152471

我用 ios7 在真机上进行测试,速度很快。

我做错了什么?

谢谢!

【问题讨论】:

我认为它对你有帮助***.com/questions/24736046/… 【参考方案1】:

来自 CLLocationManager 类参考:

在请求高精度位置数据时,位置服务提供的初始事件可能没有您请求的精度。定位服务尽快提供初始事件。然后,它会继续以您请求的准确性确定位置,并在数据可用时根据需要提供其他事件。

因此,您检索的第一个位置可能不准确。

【讨论】:

desiredAccuracy = kCLLocationAccuracyThreeKilometers 也是一样的。 这是位置管理器的正常行为。第一个位置将尽快交付,即使它不准确。下一个交付的位置更准确,并且可能在(稍微)不同的位置,即使没有移动。如果这不是您想要的,请考虑忽略前两个或三个交付的位置。

以上是关于didUpdateLocations 总是用不同的坐标多次调用的主要内容,如果未能解决你的问题,请参考以下文章

CLLocationManager didUpdateLocations 没有被称为 iOS 8 的 plist 条目

didUpdateLocations 停止更新

斯威夫特:我怎样才能减少 didupdatelocation 调用

不能调用 locationManager(_::didUpdateLocations:)

监视重大位置更改时不会调用“didUpdateLocations”

未调用位置管理器 didUpdateLocations