【问题标题】:CLLocation speed return -1.0CLLocation速度返回-1.0
【发布时间】:2016-08-26 17:55:18
【问题描述】:

我有问题。我的 GPS(在 Wifi 的 iPad mini 2 和 3G/4G 的 iPhone 6 上)速度返回 -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) ")

【问题讨论】:

  • CLLocation docs say,“负值表示无效速度。”这只是意味着它无法计算速度。也许这是它收到的第一个位置,所以它没有任何可比性。可能覆盖的距离小于horizontalAccuracy,因此它对计算速度没有信心。可能有很多东西。

标签: ios swift cllocationmanager cllocation


【解决方案1】:

我也有这个问题。负值表示无效的速度。 大多数情况下,当您在建筑物内并且您的位置因建筑物而发生很大变化时,就会发生这种情况。

一个简单的解决方法是:

if speed < 0 { 
    speed = 0 
}

这会检查速度是否为负。如果是,它会将其重置为 0。

【讨论】:

  • 如果你要将speed 强制为零,我建议if speed &lt; 0 { speed = 0 }。虽然看起来它通常是-1,但我不会为该特定值编码。规则是“如果为负,则没有速度”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
  • 2022-10-19
相关资源
最近更新 更多