您的位置:首页 > 移动开发 > Swift

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,下面通过样例进行演示



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)"

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: