加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift - 使用CoreLocation获取设备方向(真实方向,磁极方向)

发布时间:2020-12-14 06:14:53 所属栏目:百科 来源:网络整理
导读:CoreLocation这个定位框架除了可以获取设备的位置数据,还可以获取设备的方向(可以用来实现指南针功能等)。 1,CLHeading对象通过一组属性提供航向相关数据: magneticHeading :磁极方向(磁北对应于随时间变化的地球磁场极点) trueHeading :真实方向(
CoreLocation这个定位框架除了可以获取设备的位置数据,还可以获取设备的方向(可以用来实现指南针功能等)。

1,CLHeading对象通过一组属性提供航向相关数据:
magneticHeading:磁极方向(磁北对应于随时间变化的地球磁场极点)
trueHeading:真实方向(真北始终指向地理北极点)
headingAccuracy:方向的精度
timestamp:Core Loaction确定位置时的时间戳
description: 方向数据

2,方向值的含义
不管是磁极方向还是真实方向,值的单位是度,类型为CLLocationDirection,即双精度浮点数。
0.0:前进方向为北
90.0:前进方向为东
180.0:前进方向为南
270.0:前进方向为西

3,下面通过样例进行演示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import UIKit
import CoreLocation
class ViewController : UIViewController , CLLocationManagerDelegate {
//定位管理器
let locationManager: CLLocationManager = ()
@IBOutlet weak var label1: UILabel !
label2: !
label3: UILabel !
label4: !
override func viewDidLoad() {
super .viewDidLoad()
//设置定位服务管理器代理
locationManager.delegate = self
//设置定位进度
locationManager.desiredAccuracy = kCLLocationAccuracyBest
//发送授权申请
locationManager.requestAlwaysAuthorization()
}
//获取设备是否允许使用定位服务
locationManager(manager: !,
didChangeAuthorizationStatus status: CLAuthorizationStatus ) {
if status == . NotDetermined || status == Denied {
} else {
//允许使用定位服务的话,开启定位服务更新
locationManager.startUpdatingHeading()
println ( "方向定位开始" )
//关闭定位
//locationManager.stopUpdatingHeading()
}
}
//方向改变执行
CLHeading !) {
label1.text = "磁极方向:(newHeading.magneticHeading)"
label2.text = "真实方向:(newHeading.trueHeading)"
label3.text = "方向的精度:(newHeading.headingAccuracy)"
label4.text = "时间:(newHeading.timestamp)"
}
}

原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_784.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读