2016-08-26 5 views
0

私は問題があります。私のGPS(WifiのiPad mini 2と3G/4GのiPhone 6)では速度が-1.0に戻ります。アイディアがある? 私はコンソールログに受け取るものをこの:CLLocationスピードリターン-1.0

ロング:12.5245、緯度:41.9456、速度:-1.0は、KPH:ここでは-3.6

didUpdateLocations()

let userLocation: CLLocation = locations[0] 
    var speed: CLLocationSpeed = CLLocationSpeed() 
    speed = (locationManager.location?.speed)! 

    SpeedLabel.text = String(format: "%.0f km/h", speed * 3.6) 
    let long = String(Float(userLocation.coordinate.longitude)) 
    let lat = String(Float(userLocation.coordinate.latitude)) 


    print("Long: \(long), Lat: \(lat), Speed:\(speed), kph: \(speed * 3.6) ") 
+0

'CLLocation' [docs say](https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocation_Class/index.html) #// apple_ref/occ/instp/CLLocation/speed)、 "負の値は無効な速度を示します。"速度を計算できなかったことを意味します。おそらく、これは最初に受信した場所なので、それを比較することは何もありませんでした。おそらく距離は 'horizo​​ntalAccuracy'よりも小さいので、速度を計算するのは自信がありません。それはたくさんのものかもしれません。 – Rob

答えて

2

のコードを私もこの問題を抱えていた。負の値は無効な速度を意味します。 これは、あなたが建物の中にいて、建物のためにあなたの場所が大きく動いているときに、ほとんどの場合発生します。

簡単な修正は次のようになります。

if speed < 0 { 
    speed = 0 
} 

速度が負である場合、これはチェックします。そうであれば、それは0にリセットされます。

+0

もし 'speed'を強制的にゼロにするなら、私は' speed <0 {speed = 0} 'なら提案します。それは一般に '-1'であるように見えますが、私はその特定の値をコード化しません。ルールは「負の場合は速度がない」ということです。 – Rob