我正在开发一个应用程序,其中显示了飞机飞行时的位置和方向。然后,我还想使用增强现实技术来显示正在飞行的城市的标签。我已经完成所有设置,当坐着或开车时一切正常,但是当我在飞机上使用它时,发生了一些奇怪的事情。 当设备处于横向模式时,当坐在门口打开或关闭的门上时,位置图标的标题会显示正确的方向(向右的主屏幕按钮)。如果我将设备向右旋转,则平面图标向右旋转适当的量。与左相同。这很重要,因为当我向右或向左旋转手机并为增强现实打开相机时,正确的城市会显示在正确的位置。即使我们在跑道上滑行,这也可以正常工作。 但是,当我们起飞时,功能会发生变化。现在,无论我以何种方式更改设备的旋转,平面图标始终指向平面移动的方向。 我试图弄清楚为什么会发生这种情况,并想知道这是否是因为以较低的速度坐着或滑行的核心位置正在使用HEADING,而当我们起飞时,正在收集足够的信息以使用COURSE信息。 我不认为这种情况会发生,因为我在一个法拉第笼中,因为在登机口或滑行时它无法工作。 如果实际上使用的是“航向/路线”信息,我该如何补偿,这样城市标签就应该位于该位置,而不是一直移动到飞机的前部? 正在获得用户的纬度,经度和海拔高度以及前往城市的正确方向,因此一切正常。这只是标题/课程问题。
这里有一些代码只是为了说明我正在做这些事情。
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
locationManager.distanceFilter = kCLDistanceFilterNone;
[locationManager startUpdatingLocation];
[locationManager startUpdatingHeading];
如果速度超过一定值,我可以使用陀螺仪分辨手机指向哪个方向并将其添加到标题/路线上,以将标签正确地放置在正确的位置吗?
有没有人遇到问题并解决了?
答案 0 :(得分:0)
Apple对此进行了详细记录。如果您快速移动,位置管理器将使用您的运动方向来确定前进方向,并忽略电话的姿态。如果您想独立使用手机姿态,则必须改用Core Motion。