Swift - 使用CoreLocation获取设备方向(真实方向,磁极方向)(转帖)
2016-03-04 13:07
555 查看
(转载于http://www.hangge.com/blog/cache/detail_784.html)
CoreLocation这个定位框架除了可以获取设备的位置数据,还可以获取设备的方向(可以用来实现指南针功能等)。
1,CLHeading对象通过一组属性提供航向相关数据:
magneticHeading :磁极方向(磁北对应于随时间变化的地球磁场极点)
trueHeading :真实方向(真北始终指向地理北极点)
headingAccuracy :方向的精度
timestamp :Core Loaction确定位置时的时间戳
description : 方向数据
2,方向值的含义
不管是磁极方向还是真实方向,值的单位是度,类型为CLLocationDirection,即双精度浮点数。
0.0 :前进方向为北
90.0 :前进方向为东
180.0 :前进方向为南
270.0 :前进方向为西
3,下面通过样例进行演示
![](http://www.hangge.com/blog_uploads/201507/2015070713483042905.png)
CoreLocation这个定位框架除了可以获取设备的位置数据,还可以获取设备的方向(可以用来实现指南针功能等)。
1,CLHeading对象通过一组属性提供航向相关数据:
magneticHeading :磁极方向(磁北对应于随时间变化的地球磁场极点)
trueHeading :真实方向(真北始终指向地理北极点)
headingAccuracy :方向的精度
timestamp :Core Loaction确定位置时的时间戳
description : 方向数据
2,方向值的含义
不管是磁极方向还是真实方向,值的单位是度,类型为CLLocationDirection,即双精度浮点数。
0.0 :前进方向为北
90.0 :前进方向为东
180.0 :前进方向为南
270.0 :前进方向为西
3,下面通过样例进行演示
![](http://www.hangge.com/blog_uploads/201507/2015070713483042905.png)
import UIKit import CoreLocation class ViewController: UIViewController, CLLocationManagerDelegate { //定位管理器 let locationManager:CLLocationManager = CLLocationManager() @IBOutlet weak var label1: UILabel! @IBOutlet weak var label2: UILabel! @IBOutlet weak var label3: UILabel! @IBOutlet weak var label4: UILabel! override func viewDidLoad() { super.viewDidLoad() //设置定位服务管理器代理 locationManager.delegate = self //设置定位进度 locationManager.desiredAccuracy = kCLLocationAccuracyBest //发送授权申请 locationManager.requestAlwaysAuthorization() } //获取设备是否允许使用定位服务 func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) { if status == CLAuthorizationStatus.NotDetermined || status == CLAuthorizationStatus.Denied{ }else{ //允许使用定位服务的话,开启定位服务更新 locationManager.startUpdatingHeading() println("方向定位开始") //关闭定位 //locationManager.stopUpdatingHeading() } } //方向改变执行 func locationManager(manager: CLLocationManager!, didUpdateHeading newHeading: CLHeading!) { label1.text = "磁极方向:\(newHeading.magneticHeading)" label2.text = "真实方向:\(newHeading.trueHeading)" label3.text = "方向的精度:\(newHeading.headingAccuracy)" label4.text = "时间:\(newHeading.timestamp)" } }
相关文章推荐
- 《从零开始学Swift》学习笔记(Day 50)——扩展计算属性、方法
- 《从零开始学Swift》学习笔记(Day 49)——扩展声明
- 《从零开始学Swift》学习笔记(Day48)——类型检查与转换
- 《从零开始学Swift》学习笔记(Day 47)——final关键字
- 《从零开始学Swift》学习笔记(Day 46)——下标重写
- Swift语言iOS8的蓝牙Bluetooth解析(转帖)
- 《从零开始学Swift》学习笔记(Day 45)——重写方法
- 《从零开始学Swift》学习笔记(Day 44)——重写属性
- 《从零开始学Swift》学习笔记(Day43)——构造函数继承
- 《从零开始学Swift》学习笔记(Day 42)——构造函数调用规则
- 《从零开始学Swift》学习笔记(Day 41)——类的继承
- iOS开发swift--函数
- swift学习笔记-----swift中的指针
- Swift教程17-淡化MVC,使用MVVM框架开发轻巧便于维护的iOS app
- XCode7添加自定义framework 比如加入swiftjson.framework框架后运行真机出现dyld: Library not loaded的解决方法
- 写在新书《Swift开发手册:技巧与实战》出版之际
- swift:基本数据类型
- 错误处理与异常抛出_Swift基础知识学习
- 获取对象类型(swift)
- Swift析构器