首页 > 解决方案 > iOS 核心位置标题和课程更改

问题描述

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

这是一些代码,只是为了表明我已经完成了这些事情。

locationManager = [[CLLocationManager alloc] init];

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

如果速度超过一定量,我可以使用陀螺仪来判断手机指向的方向并将其添加到航向/路线以将标签放在正确的位置吗?
有没有人遇到过这个问题并解决了?

标签: iosobjective-ccore-location

解决方案


这一切都被 Apple 详细记录了下来。如果您快速移动,位置管理器会使用您的运动方向来确定航向,并忽略手机的姿态。如果你想要独立的手机姿态,你必须使用 Core Motion。


推荐阅读