iOS 核心位置航向和航向改变

iOS core location heading and course changing

我正在开发一款应用程序,可以在其中显示飞机飞行时的位置和航向。然后我还想使用增强现实显示正在飞行的城市的标签。我已经设置好了一切,当我坐着不动或开车时它工作正常,但当我在飞机上使用它时,发生了一些奇怪的事情。 当门打开或关闭时坐在门口时,位置图标的标题会在设备处于横向模式时显示正确的方向(主页按钮向右)。如果我向右旋转设备,平面图标会向右旋转适当的量。左手也一样。这很重要,因为当我向右或向左旋转 phone 并打开增强现实相机时,正确的城市会出现在正确的位置。即使我们在跑道上滑行,这也完全可以正常工作。 但是,当我们取消功能更改时。现在无论我以何种方式改变设备的旋转,平面图标始终指向飞机移动的方向。 我试图弄清楚为什么会发生这种情况,并且想知道这是否是因为在较慢的速度下静坐或滑行核心位置正在使用 HEADING 而当我们起飞时正在收集足够的信息以使用 COURSE 信息。 我不认为这会发生,因为我在法拉第笼子里,因为它在门口或滑行时不起作用。 如果它实际上是在使用 Heading/Course 信息,我该如何补偿,以便城市标签位于它们应该位于的位置,而不是不断移动到飞机的前部? 我正在获取用户的纬度、经度和海拔高度以及前往城市的正确航向,因此一切正常。这只是 heading/course 个问题。

这里有一些代码只是为了展示我已经完成了这些事情。

locationManager = [[CLLocationManager alloc] init];

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

我可以使用陀螺仪来判断 phone 指向的方向并将其添加到 heading/course 以便在速度超过一定数量时将标签放在正确的位置吗?
有没有人 运行 解决了这个问题?

Apple 对此进行了详细记录。位置管理器使用您的运动方向来确定航向,如果您快速移动,则忽略 phone 姿态。如果你想要独立的 phone 态度,你必须使用 Core Motion 来代替。