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

时间:2015-06-05 08:15:56

标签: ios swift core-location cllocationmanager

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

  

重要   仅当为相应的位置管理器对象启用了位置更新时,此属性才包含有效值。由于真北的位置与地球表面的磁北位置不同,因此核心位置需要设备的当前位置来计算此属性的值。

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

1 个答案:

答案 0 :(得分:3)

您要求的是不可能直接使用CoreLocation。使用LocationManager,如果您想要真北,则必须调用' startUpdatingLocation`,以便可以返回带有真北值的标题。没有一种方法可以手动为LocationManager设置位置以供使用。

但是,您可以根据返回的磁力值计算真北。您可以让用户手动设置其常规位置,作为设置的一部分,并将其存储在计算真北时使用。您可以使用具有位置和磁偏角值的基本查找表。有点像真正的地图和指南针会使用。但是,磁偏角值会随着时间的推移而变化,因此您需要一种方法来更新它。

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

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

NOAA - http://www.ngdc.noaa.gov/geomag/WMM/

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

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