如何使用CoreLocation制作指南针

时间:2017-01-19 13:14:15

标签: ios swift2 xcode7 core-location

我想在我的应用中实现指南针。我看了另一个堆栈溢出问题,它说你可以使用下面的代码

viewDidLoad方法中的此代码

var lm:CLLocationManager!
   lm = CLLocationManager()
    lm.delegate = self
    lm.startUpdatingHeading()

这个功能在视图控制器的某个地方

func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {}

但是当我在模拟器上运行我的代码时,函数没有被调用(是的,我确实导入了CoreLocation并模拟了一个位置)。我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您希望此方法可以运行,请在设备中运行应用程序,或者您可以使用gpx文件并在xcode终端中模拟位置

答案 1 :(得分:0)

首先,模拟器没有指南针。你根本无法在SIM卡上做到这一点。

其次,我不确定您是否必须征得用户的同意才能获得标题信息。对于GPS,您需要在info.plist中输入一个条目并拨打电话以请求授权。我没有完成标题代码,因为添加了授权要求所以我不确定你是否必须为标题做这个。快速浏览文档并未提及它。

我建议在设置标题更新时咨询Xcode文档:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/GettingHeadings/GettingHeadings.html#//apple_ref/doc/uid/TP40009497-CH5-SW1

关键是:

  

获取标题事件:

     

创建CLLocationManager对象。

     

通过调用headingAvailable类方法确定标题事件是否可用。

     

将委托分配给位置管理器对象。

     

如果您想要真北值,请启动位置服务。

     

调用startUpdatingHeading方法开始传送标题事件。