CoreLocation:LocationManager.stopUpdatingLocation() 不工作

Posted

技术标签:

【中文标题】CoreLocation:LocationManager.stopUpdatingLocation() 不工作【英文标题】:CoreLocation: LocationManager.stopUpdatingLocation() not working 【发布时间】:2017-05-12 14:45:25 【问题描述】:

我试图了解为什么 locationManager 在我调用 stopUpdatingLocation() 后继续提供更新

extension ActionViewController: CLLocationManagerDelegate 
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
        let newLocation: CLLocation = locations.last!
        print("New Location Accuracy is: \(newLocation.horizontalAccuracy)")
        print("Desired Accuracy is: \(locationManager.desiredAccuracy)")
        if newLocation.horizontalAccuracy < 0 
            return
        

        if newLocation.horizontalAccuracy <= locationManager.desiredAccuracy 
            print("We are shutting down location manager")
            locationManager.stopUpdatingLocation()
            currentLocation = newLocation
        let camera = GMSCameraPosition.camera(withLatitude: newLocation.coordinate.latitude,
                                              longitude: newLocation.coordinate.longitude,
                                              zoom: zoomLevel)
...

从调试区打印: 新定位精度为:10.0 所需精度为:10.0 我们正在关闭位置管理器 新定位精度为:10.0 所需精度为:10.0 我们正在关闭位置管理器 新定位精度为:10.0 所需精度为:10.0 我们正在关闭位置管理器 新定位精度为:702.317035988665 所需精度为:10.0 新定位精度为:702.318123337466 所需精度为:10.0 新定位精度为:10.0 所需精度为:10.0 我们正在关闭位置管理器

【问题讨论】:

我认为你应该打电话给manager.stopUpdatingLocation()而不是locationManager.stopUpdatingLocation() 恐怕没用。 你确定"We are shutting down location manager"被打印了吗? 是的。它被多次打印,这是问题的核心。 它会在一段时间后停止报告位置吗? 【参考方案1】:

我花了很多时间寻找答案,我相信我已经找到了。显然,在调用 stopUpatingLocation 后,GPS 天线需要几秒钟才能断电。有人发帖称这是在 WWDC 上讨论过的。

Here is the post

【讨论】:

以上是关于CoreLocation:LocationManager.stopUpdatingLocation() 不工作的主要内容,如果未能解决你的问题,请参考以下文章

CoreLocation框架之APP定位

无法通过 Corelocation 找到位置

iOS核心笔记—CoreLocation框架-基础

MKMapView 不专注于 CoreLocation

检测 App 是不是链接到 CoreLocation 框架

CoreLocation导航Demo