【发布时间】:2018-04-02 14:48:16
【问题描述】:
所以,我有一个导航应用程序。它使用板载 GPS(以及磁罗盘和加速度计)构建类似于 Google Sky 工作方式的 3D 增强现实视口。我们不使用 ARKit 的原因有很多,包括该设备将用于移动的车辆,我们担心 ARKit 会被明显不动的车辆内部分散注意力,而不是关注不可见移动的外部车辆外部的参考系,这是我们希望 AR 导航显示对齐的参考系。
AR 方向部分不是我的主要问题(尽管我发现磁罗盘加加速度计确实很容易出错)。我烦恼的问题是,无论我多么努力,一些 iOS 设备(主要是 iPad)似乎都没有使用实际的 GPS 硬件来确定核心位置数据。它似乎使用 Wifi 三边测量,因此提供了较差的位置数据(缺少高度),因此提供了从位置数据计算的较差的速度数据。
这里有一些事实。
我这样初始化定位服务:
_locationManager = [[CLLocationManager alloc]init];
[_locationManager requestAlwaysAuthorization];
_locationManager.delegate = self;
_locationManager.distanceFilter = kCLDistanceFilterNone;
_locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
[_locationManager startUpdatingLocation];
在某些设备上,我们肯定会获得完整的 3D GPS 位置,包括海拔高度。
但是,某些测试设备(“APPLE MPMF2LL/A iPad Pro with Wi-Fi + Cellular 512GB, 10.5”, Silver”、“Apple iPad Air 2 MH2V2LL/A (16GB, Wi-Fi + Cellular, Silver) 2014模型”,同时具有蜂窝功能和 OS 11.2.6),我们得到的位置数据报告垂直精度
我们已尝试开启和关闭飞行模式,确保已启用定位服务并已向我们的应用授予权限。我们尝试将位置权限设置为“始终”。我们尝试过恢复出厂设置。
来自其他应用开发者的简单指南针应用似乎可以正常工作,并在这些设备上显示正确的高度和垂直精度。我们的应用程序似乎在其他设备(各种口味的 iPhone、全尺寸第 5 代 iPad)上运行良好,并获得完整的 GPS 位置。所以,这似乎不是测试设备的硬件故障,但也不是我们代码的完全故障。
是否有一些我们没有请求或正确执行的魔法来确保我们获得完整的 GPS 来源位置数据?
对于我们无法获得 GPS 海拔高度的设备或情况,代码中已经有一个后备方案。但是,如果设备具有该功能,我们希望确保我们以最佳功能使用它。我们也在研究使用外部 GPS 的能力,但如果我们要求的话,我们应该能够使用 iOS 设备肯定具备的功能。
感谢任何见解。好像不应该这么难。
【问题讨论】:
标签: ios ipad geolocation gps core-location