Заголовок ядра iOS и изменение курса - PullRequest
0 голосов
/ 10 марта 2019

Я работаю над приложением, в котором я показываю местоположение и направление движения самолета во время полета. Я также хочу показать ярлыки городов, над которыми летают, используя дополненную реальность. У меня все настроено, и оно работало нормально, когда я сидел неподвижно или ехал в машине, но когда я использовал его в самолете, произошло нечто странное. Когда вы сидите у ворот с открытой или закрытой дверью, заголовок значка местоположения показывает правильное направление, когда устройство находится в ландшафтном режиме (кнопка «Домой» справа). Если я поверну устройство вправо, то значок плоскости повернется вправо на соответствующую величину. То же самое с левой. Это важно, потому что, когда я поворачиваю телефон вправо или влево и открываю камеру для дополненной реальности, правильные города появляются в правильном месте. Это работает совершенно нормально, даже когда мы рулим на взлетной полосе. Однако, когда мы снимаем, функция меняется. Теперь независимо от того, каким образом я изменяю вращение устройства, значок плоскости всегда указывает в направлении движения плоскости. Я пытаюсь выяснить, почему это происходит, и мне было интересно, так ли это, потому что на более медленной скорости сидя на месте или руление основное местоположение использует HEADING, тогда как, когда мы взлетаем, собирается достаточно информации для использования информации COURSE. Я не думаю, что это происходит, потому что я нахожусь в клетке Фарадея, потому что это не будет работать, когда у ворот или руления. Если на самом деле используется информация о курсе / курсе, как мне компенсировать, чтобы метки городов находились там, где они должны быть, вместо того, чтобы постоянно перемещаться к передней части самолета? Я получаю широту, долготу и высоту пользователя и правильный курс в города, так что все работает нормально. Это просто проблема курса / курса.

Вот код, чтобы показать, что у меня все в порядке.

locationManager = [[CLLocationManager alloc] init];

    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    [locationManager startUpdatingLocation];
    [locationManager startUpdatingHeading];

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

1 Ответ

0 голосов
/ 10 марта 2019

Это все хорошо документировано Apple.Менеджер местоположений использует ваше направление движения для определения направления и игнорирует положение телефона, если вы двигаетесь быстро.Если вы хотите, чтобы телефон был настроен независимо, вы должны использовать вместо него Core Motion.

...