Точность определения местоположения CLLocation

У меня есть приложение для определения местоположения, в котором предоставляется высота пользователя. Однако я обнаружил, что точность возвышения, предоставляемая CLLocationManager, крайне неточна. Когда я дважды тестирую те же два пятна, иногда разница в высоте составляет сорок футов, а иногда и сто. Есть ли способ улучшить вертикальную точность CLLocation, или есть другой способ получить возвышение пользователя (сторонние библиотеки)? Я уже пробовал проверять свойство verticalAccuracy newLocation, предоставляемое CLLocationManager, и выкидывать его, если этого недостаточно, но даже когда он является «точным», он все еще часто не является точным. Спасибо за ваше время!

Сейчас я использую:

if([newLocation verticalAccuracy] < 30) { if(isCustomary) altitudeLabel.text = [NSString stringWithFormat:@"%.2f feet", ([newLocation altitude] * 3.2808399)]; else altitudeLabel.text = [NSString stringWithFormat:@"%.2f meters", [newLocation altitude]]; } 

Проблемы с этим кодом: часто verticalAccuracy никогда не опускается ниже 30, и когда это происходит, это все равно даже близко к достаточно точному; Я проверил код, идущий вокруг моего дома (одна история), и он говорит, что изменение высоты до девятнадцати футов, что, я уверен, не соответствует действительности.

Высота, получаемая спутниками GPS, по своей сути менее точна, чем горизонтальное решение GPS из-за геометрии спутников. Вы должны ожидать, что вертикальная точность будет примерно в 1,5-3 раза хуже горизонтальной. Это всего лишь ограничение GPS и почему авиация требует коррекции WAAS, прежде чем вы сможете использовать GPS для подходов к инструментам.

Когда вертикальная точность составляет 20 или 30 метров, вы должны ожидать, что высота не должна превышать 100 футов. Ожидая, что он не изменится на 19 футов, когда вы будете ходить по дому нереальным.

Что бы вы могли сделать, так это сохранить скользящий, взвешенный средний (или фильтр Калмана ) недавних «хороших» показаний высоты, чтобы помочь отфильтровать ошибки измерения.

Какой код вы пробовали? Это лучший код для повышения, поэтому я не думаю, что есть что-то помимо этого:

 -(void)awakeFromNib { locmanager = [[CLLocationManager alloc] init]; [locmanager setDelegate:self]; [locmanager setDesiredAccuracy:kCLLocationAccuracyBest]; [locmanager startUpdatingLocation]; } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { heightMesurement.text = [NSString stringWithFormat: @"%.2f m", newLocation.altitude]; } - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { heightMesurement.text = @"0.00 m"; } 
  • Параметры 'locationManager (_: didUpdateLocations :)' имеют различную опциональность, чем ожидалось по протоколу 'CLLocationManagerDelegate'
  • CLLocationManager не останавливается
  • CLLocationManager requestStateForRegion с кодом ошибки «При использовании» 4
  • iOS - MKMapView размещает аннотацию, используя адрес вместо lat / long
  • Множественные реализации CLLocationManager
  • Методы CLLocationManagerDelegate, не вызываемые в Swift-коде
  • Имея проблемы с вычислением точного общего расстояния ходьбы / пробега с помощью CLLocationManager
  • Обратное геокодирование в Swift
  • Симулятор iPhone всегда равен нулю
  • Как уточнить цель его использования в месте модальности?
  • Pretty Print Расстояния для iOS
  • Interesting Posts

    Геолокация Кордовы в IOS не работает

    Добавьте границу и тень вокруг непрозрачных пикселей UIImage

    Как поместить в произвольный контроллер вида из любой точки в стеке навигации

    как показать сообщение об ошибке проверки текстового поля в ярлыке

    Xcode 9 – не удалось выпустить предварительно скомпилированный заголовок

    Как правильно обрабатывать нуль UIApplication.sharedApplication (). KeyWindow

    iOS 7 UIImagePickerView сначала показывает черный предварительный просмотр

    Как использовать translationInView: с UIPanGestureRecognizer иметь невидимый эффект слайдера?

    Использование календаря в моем приложении для отслеживания моих событий и синхронизации на календаре Google

    «Основные данные не являются реляционной базой данных». Почему именно это важно знать?

    Как создать только ресурс Bundle для iPhone

    Xcode Build и Run Succeeds, но Archive Fails

    Ошибка CocoaLumberjack: Символ не найден: _objc_storeStrong

    Обнаруживать, если прокрутка UIScrollView

    как заблокировать портретную ориентацию только для основного вида с помощью быстрой

    Давайте будем гением компьютера.