我可以在 iPhone 中的 CLLocationManager 中设置自定义位置吗

Can I set custom location in CLLocationManager in iPhone

我正在开发一个显示真航向(即指向真北)的罗盘应用程序,它使用苹果文档中描述的位置

IMPORTANT This property contains a valid value only if location updates are also enabled for the corresponding location manager object. Because the position of true north is different from the position of magnetic north on the Earth’s surface, Core Location needs the current location of the device to compute the value of this property.

我想做的是,如果用户的设备未连接到互联网或用户拒绝访问其位置的权限,那么我会手动从用户那里获取坐标并将这些坐标提供给 CoreLocation 以获得正确的真实航向。这可能吗?
提前致谢!

直接使用 CoreLocation 无法满足您的要求。使用 LocationManager,如果您想要真北,则必须调用“startUpdatingLocation”,以便可以返回具有真北值的航向。没有一种方法可以手动设置位置供 LocationManager 使用。

不过,您可以根据返回的磁场值计算出真北。作为设置的一部分,您可以让用户手动设置他们的一般位置,并存储它以供计算真北时使用。您可以使用包含位置和磁偏角值的基本查找 table。有点像真正的地图和指南针。但是,磁偏角值会随时间变化,因此您需要一种方法来更新它。

如果你不熟悉磁偏角,这里有一个pretty good link from REI应该给你基本的概念。

这些链接提供了有关如何计算磁偏角的更多详细信息:

美国国家海洋和大气局 - http://www.ngdc.noaa.gov/geomag/WMM/

iOS - https://github.com/stephent/ObjectiveWMM

查找Table - http://www.societyofrobots.com/robotforum/index.php?topic=11855.0