【问题标题】:Can I adjust the frequency of locationManager (_: didUpdateLocations :)?我可以调整 locationManager (_: didUpdateLocations :) 的频率吗?
【发布时间】:2017-11-27 06:34:15
【问题描述】:

在模拟器中,这个方法只执行一次。

但是,在使用真实手机进行测试时,它会在同一位置运行多次。

我想控制这个方法的频率。

或者可以通过distanceFilter吗?

如果可能,我应该怎么做?

我怀疑 locationManager (_: didUpdateLocations :) 方法是在位置更改时自动运行,所以我无法控制它。

有办法吗?

import UIKit
import CoreLocation

class MainViewController: UIViewController, CLLocationManagerDelegate {

    let locationManager = CLLocationManager()


    override func viewDidLoad() {
        super.viewDidLoad()
        locationManager.delegate = self
        locationManager.requestAlwaysAuthorization()
        locationManager.startUpdatingLocation()
    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        // my source code
    }
}

【问题讨论】:

    标签: swift cllocationmanager


    【解决方案1】:

    不要使用函数func locationManager(_ manager: CLLocationManager, didUpdateTo newLocation: CLLocation, from oldLocation: CLLocation)自iOS 6以来已被弃用。

    deprecated method

    设置所需的精度应该可以解决以相对相同的点获取许多更新的问题。对于精度稍差的跟踪,可以尝试

    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters

    如果您担心长时间运行的跟踪任务/作业,请考虑实施

    func locationManagerDidPauseLocationUpdates(CLLocationManager)

    func locationManagerDidResumeLocationUpdates(CLLocationManager)

    他们会通知你位置没有改变,并且为了省电,设备会关闭一些硬件。

    CLLocationMangager

    CLLocationManagerDelegate

    【讨论】:

      【解决方案2】:

      您可以设置位置精度,如

      self. locationManager.desiredAccuracy = kCLLocationAccuracyBest
      

      见https://developer.apple.com/documentation/corelocation/cllocationaccuracy

      【讨论】:

        【解决方案3】:

        我不确定你能控制它。您可以使用func locationManager(_ manager: CLLocationManager, didUpdateTo newLocation: CLLocation, from oldLocation: CLLocation) { } 方法。此方法为您提供上一个位置和新位置,并且代表这些位置,您可以执行所需的功能。

        或者你可以参考这个答案click here

        【讨论】:

          【解决方案4】:

          位置不会随模拟器而改变。你只会从 didupdatelocations 回调中得到一个调用。在真实设备上运行将导致完成处理程序不断触发。您可以使用 GPX 文件模拟一个位置,但我认为它不会比使用模拟器触发更多。

          所需的精度确实会改变发射频率,但频率还取决于 GPS 硬件和电池寿命状态。 iOS将频率控制到一定点以优化设备性能和寿命

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-07
            • 2013-10-12
            • 1970-01-01
            相关资源
            最近更新 更多