В прототипе iOS я использую комбинацию CMDeviceMotion.deviceMotion.yaw и CLHeading.trueHeading, чтобы сделать стабильный заголовок компаса, который является отзывчивым и точным. Это хорошо работает, когда iPhone удерживается плоским, где у меня есть графическая стрелка, указывающая на стабильный заголовок компаса.
Проблема возникает, когда iPhone удерживается вертикально в режиме portait. UIDeviceOrientation постоянно изменяется с UIDeviceOrientationFaceDown на UIDeviceOrientationFaceUp и обратно. Это делает значение рыскания проскальзыванием вперед и назад +/- 180 градусов на основе небольших изменений высоты тона. Можно ли заблокировать устройство до одной ориентации, что дает стабильное значение рыскания, предсказать изменение без сбоев или вычислить гироскоп (или рулон в этой ориентации) другими способами?
У этого бедного парня такая же проблема, без ответов. Возможны двойные точки!:) https://stackoverflow.com/info/10470938/euler-angle-yaw-not-working-when-iphone-orientation-changes