如何在 Xcode 上打印指南针方向?
Posted
技术标签:
【中文标题】如何在 Xcode 上打印指南针方向?【英文标题】:How to print compass orientation on Xcode? 【发布时间】:2021-09-08 23:35:26 【问题描述】:总的来说,我对编码非常陌生,并且一直在学习大量教程以了解我现在所处的位置。我关注了***的另一个问题:Finding the compass orientation of an iPhone in swift
按照每个答案中的代码,没有打印任何内容。这是我的代码:
import UIKit
import CoreLocation
class PointingViewController: UIViewController, CLLocationManagerDelegate
var locationManager: CLLocationManager = CLLocationManager()
override func viewDidLoad()
super.viewDidLoad()
locationManager.delegate = self
func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading)
print(newHeading.magneticHeading)
@IBAction func firstButtonPressed(_ sender: Any)
locationManager.startUpdatingLocation()
locationManager.startUpdatingHeading()
理想情况下,只要按下按钮就会记录罗盘方向。我尝试将.startUpdatingLocation()
和.startUpdatingHeading
放在viewDidLoad()
函数中,但没有发生任何变化。
有没有更好的方法来实现我的愿望?
【问题讨论】:
【参考方案1】:代码看起来不错,除了你没有做文档说你需要做的所有事情,比如检查isHeadingAvailable
等。文档说:
如果不支持标题信息,则调用此方法无效并且不会将事件传递给您的委托。
如果事情不起作用,实施locationManager(_:didFailWithError:)
也是一个好计划。
您是否已针对“将位置服务添加到您的应用”中记录的位置权限做了必要的事情
【讨论】:
【参考方案2】:您应该在网上搜索合适的教程。我将为您提供一些指导以帮助您入门,但请自己进行研究。
您必须先请求许可。将此添加到您的viewDidLoad
locationManager.requestAlwaysAuthorization()
同时实现委托方法
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)
// start requesting heading information if you are authorized.
并处理不同的状态。
您可能还需要在 Info.plist 中添加权限条目,但我不确定标题是否需要。
【讨论】:
以上是关于如何在 Xcode 上打印指南针方向?的主要内容,如果未能解决你的问题,请参考以下文章