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

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

    }  

}

时间: 2024-08-03 15:40:05

Swift - 使用CoreLocation获取设备方向(真实方向,磁极方向)的相关文章

第三天:Swift利用CoreLocation获取当前地址

参考链接:https://www.jianshu.com/p/ade69f95bffc 1 import UIKit 2 import CoreLocation 3 4 class ViewController: UIViewController, CLLocationManagerDelegate { 5 6 @IBOutlet weak var showLocationBtn: UIButton! 7 @IBOutlet weak var locationLabel: UILabel! 8

Swift - 判断设备方向(或监听设备方向的改变)

通过UIDevice.currentDevice()来获取设备,可以取得设备当前的方向. 同时,我们可以添加一个通知来监听设备方向的变化,这样在开发中可以对不同的方向定制不同的排版布局界面. 下面通过一个样例,演示如何监测设备方向: 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 import UIKit cla

基于JQuery的获取鼠标进入和离开容器方向的实现

基于JQuery的获取鼠标进入和离开容器方向的实现 做动画时,需要判断鼠标进入和退出容器的方向.网上找到的基于JQuery的实现方法,用函数封装了一下,写了一个示例.注意绑定鼠标事件用的是on(),所以JQuery版本需高于1.7. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>判断鼠标从哪个方向进入和离开容器</title&g

Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)

CoreLocation是iOS中一个提供设备定位的框架.通过这个框架可以实现定位处理,从而获取位置数据,比如经度.纬度.海拔信息等. 1,定位精度的设置 定位服务管理类CLLocationManager的desiredAccuracy属性表示精准度,有如下6种选择: kCLLocationAccuracyBestForNavigation :精度最高,一般用于导航kCLLocationAccuracyBest : 精确度最佳kCLLocationAccuracyNearestTenMeters

获取设备号

//获取设备id号 UIDevice *device = [UIDevice currentDevice];//创建设备对象 NSString *deviceUID = [[NSString alloc] initWithString:device.identifierForVendor.UUIDString]; NSLog(@"************************************************************************************

位置与地图:定位获取设备的位置

首先加入Core Location框架,能够通过该框架中包括的类,获取设备的地理位置. 使用位置服务时,须要加入coreLocation.framework #impart <CoreLocation/CoreLocation.h> 注意事项: 1.使用地图服务时,会消耗很多其它的设备电量.因此,在获取到设备的位置后,应该停止定位以节省点亮 2.将位置服务设置为全局变量 .h文件里 #import <UIKit/UIKit.h> #import <CoreLocation/C

iOS获取设备唯一标识的8种方法

8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可以改变设备的 UDID),移动网络可以利用 UDID 来识别移动设备. 许多开发者把 UDID 跟用户的真实姓名.密码.住址.其它数据关联起来,网络窥探者会从多个应用收集这些数据,然后顺藤摸瓜得到这个人的许多隐私数据,同时大部分应用确实在频繁传输 UDID 和私人信息. 为了避免集体诉讼,苹果最终决

获取设备信息

mark下如何获取设备相关的信息 NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; // app名称 NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"]; // app版本 NSString *app_Version = [infoDictionary objectForKey:@"CFBu

获取设备列表的API

通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表.libpcap和WinPcap都提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息.值得注意的是,数据域 name 和 description 表示一个适配器名称和一个可以让人们理解的描述. 在vs2008中调试代码的步骤: 运行环境准备:WpdPack_4_1_2安装包 1:将WpdPack_4_1_