CLLocation всегда возвращает скорость -1 на iPad (только Wifi), но работает нормально на iPhone - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь набрать скорость на iPad с помощью CLLocation, но он дает мне -1, и он отлично работает на iPhone

Я просмотрел документацию Apple, в которой говорится, что отрицательная скорость недопустима и которую следует игнорировать.

Используемое устройство: iPad Mini 4 OS: 11.4.1 (15G77)

var locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.requestAlwaysAuthorization()
locationManager.distanceFilter = kCLDistanceFilterNone

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{
    print(locations.last.speed)
}

1 Ответ

0 голосов
/ 04 октября 2018

Отрицательное значение означает недопустимую скорость.Это чаще всего происходит, когда вы находитесь внутри здания и ваше местоположение сильно меняется из-за здания.

Простое исправление будет выглядеть так:

let userLocation: CLLocation = locations[0]
var speed: CLLocationSpeed = CLLocationSpeed()
speed = (locationManager.location?.speed)!
 if speed < 0 { 
    speed = 0 
 }
SpeedLabel.text = String(format: "%.0f km/h", speed * 3.6)
...