Точность определения местоположения 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"; } 
  • CLLocationManager - рассчитать скорость реального времени на iPhone
  • разница между didEnterRegion и didRangeBeacons
  • Как включить доступ к службе мониторинга региона?
  • Как сделать приложение ios в службах местоположения в настройках
  • locationManager избегает (нулевой) строки в ярлыке
  • CLLocationManager не вызывает делегат в NSObject
  • CLCircularRegion - произвольное значение для notifyOnEntry
  • Ошибка авторизации CLLocationManager iOS 8
  • Как отключить оповещение о местоположении системы в iOS-симуляторе
  • Ошибка CLLocationManager при выпуске, но почему?
  • Как изменить текст «Приложение хочет использовать ваше текущее местоположение?»
  • Interesting Posts

    Как изменить размер представления при использовании UINavigationController setToolbarHidden: анимированный:

    Программно автоматическое подключение к WiFi iOS

    Как я могу создать клавиатуру как кнопки с UIInputView?

    Как протестировать Branch.io в симуляторе?

    Отсутствует функция index

    Как я могу перемещать CGRect с помощью UITouches?

    iPhone – что является лучшим способом отображения сообщения об ошибке ниже UITextfield

    Масштабирование анимации UIButton-Swift

    AVPlayer устанавливает начальное время воспроизведения iOS

    Как обновить UITableViewCells с помощью NSTimer и NSNotificationCentre в Swift

    NSManagedObjectModel – динамически создавать модель

    Различные идентификаторы Bundle для фреймворков Cocoapods не распознаются

    «Название проекта» было скомпилировано с оптимизацией – степпинг может вести себя странно; переменные могут быть недоступны

    Что означает 70% серого и как это указать в UIColor?

    Не изменяйте размер панели навигации при скрытии строки состояния.

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