Я разрабатываю приложение для бегунов, поэтому мне нужны высокоточные GPS-координаты. Версия для Android готова, сейчас я тестирую с версией для iOS. Я использую провайдера местоположения по умолчанию в Swift следующим образом:
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.distanceFilter = 1.0
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
И координаты я обрабатываю следующим образом:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last as CLLocation?
let accuracy = location?.horizontalAccuracy
}
Когда точность ниже 20, я обрабатываю координату в 'location' и показываю местоположение на карте. Это работает нормально, но точность далека от хорошей.
kCLLocationAccuracyBestForNavigation должен давать наилучшие результаты, но ...
Сегодня я тестировал одновременно два устройства: одно устройство Android (цена: 150 долларов) и iPhone X (цена: 1000 долларов). Устройство Android показывает мне местоположение максимум в 10 метрах от моего реального местоположения. IPhone X с кодом выше показывает мне в 70% случаев местоположение примерно в 30-40 метрах от моего реального местоположения. Это не достаточно хорошо для работающего приложения, которое дает устные инструкции.
Не может быть, чтобы приемник GPS в iPhone X был более низкого качества, чем приемник GPS в Huawei Y5? Условия окружающей среды были точно такими же.
Есть ли способ получить более точные местоположения?