我在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()
它有什么问题。
高级谢谢..
答案 0 :(得分:1)
通常,在处理外部事件和附件(位置,硬件通信等)时,当您想要的信息无法计算或无效时,Apple会给您一个-1。你不能做任何假设,你只需要拦截那些信息(某种计算错误)并处理它就像信息丢失一样。
负值表示无效速度
https://developer.apple.com/documentation/corelocation/cllocation/1423798-speed