位置经理无法在ios中获得速度

时间:2017-06-07 09:17:34

标签: ios swift locationmanager

我在iOS应用中使用CLLocationManager来获取用户的当前位置。

我还需要计算用户的速度,我得到了它,可以使用委托方法" didUpdateLocations"来计算。

 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let location: CLLocation = locations.last!
    var speed1 = location.speed
    speedLabel.text = "\(speed1)"
}

我可以更新用户的当前位置,但速度值不正确。最初,速度值为-1,即使位置正确更新,值也不会发生变化。

我的位置管理器的初始化位于

之下
    var locationManager = CLLocationManager()
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLLocationAccuracyNearestTenMeters;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.requestAlwaysAuthorization()
    locationManager.startUpdatingLocation()

它有什么问题。

高级谢谢..

1 个答案:

答案 0 :(得分:1)

通常,在处理外部事件和附件(位置,硬件通信等)时,当您想要的信息无法计算或无效时,Apple会给您一个-1。你不能做任何假设,你只需要拦截那些信息(某种计算错误)并处理它就像信息丢失一样。

  

负值表示无效速度

https://developer.apple.com/documentation/corelocation/cllocation/1423798-speed