2017-06-07 7 views
1

iOSアプリケーションでCLLocationManagerを使用してユーザーの現在地を取得しています。ロケーションマネージャがiosでスピードを得ることができない

私はまた、ユーザーの速度を計算する必要があり、私はそれを持って、それは委任メソッド "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

https://stackoverflow.com/a/32872002/5501940を示し –

+0

これはデフォルトの動作であり、あなたはあなたにそれを処理する必要が自分の。カルマンフィルタのようなこの問題を無効にするフィルタリングメカニズムはたくさんあります。 –

答えて

1

、Appleはあなたを与えるだろう-1、必要な情報が計算可能ではないか、何か無効であるとき。何らかの仮定をすることはできません。その情報(ある種の計算エラー)を傍受し、情報が欠落しているかのように処理するだけです。

負の値が無効スピード

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

関連する問題