#import "ViewController.h"

#import <CoreLocation/CoreLocation.h>

@interface ViewController ()<CLLocationManagerDelegate>

// 定位管理对象

@property (nonatomic, strong) CLLocationManager *mgr;

// 指南针

@property (nonatomic, strong) UIImageView *compass;

@end

@implementation ViewController

- (CLLocationManager *)mgr{

if (!_mgr) {

_mgr = [[CLLocationManager alloc] init];

}

return _mgr;

}

- (void)viewDidLoad {

[super viewDidLoad];

// 1. 添加指南针

UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg_compasspointer"]];

iv.center = CGPointMake(self.view.center.x, self.view.center.y);

[self.view addSubview:iv];

self.compass = iv;

// 2. 成为代理

self.mgr.delegate = self;

// 3. 开始监听

// 开始获取用户方向  --- 不需要授权

//    [self.mgr startUpdatingHeading];

}

// 授权状态改变调用这个方法

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status

{

if (status == kCLAuthorizationStatusNotDetermined) {

LogYellow(@"正在授权");

}else if ((status == kCLAuthorizationStatusAuthorizedAlways) || (status == kCLAuthorizationStatusAuthorizedWhenInUse)){

[self.mgr startUpdatingHeading];

}else{

LogYellow(@"授权失败");

}

}

#pragma mark - CLLocationManagerDelegate

// 当获取到用的的方向时, 就会调用

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading

{

/**

magneticHeading 设备与磁北的相对角度

trueHeading 设置与真北的相对角度, 必须和定位一起使用, iOS需要设置的位置来计算真北

真北始终指向地理北极点

磁北对应随着时间变化的地球磁场北极

*/

LogRed(@"%f",newHeading.magneticHeading);

// 1.角度转换成弧度

CGFloat angle = newHeading.magneticHeading * M_PI/ 180.0;

// 2.旋转图片

/**

*  顺时针: 正数

*  逆时针: 负数

*/

//    self.compass.transform = CGAffineTransformIdentity;

self.compass.transform = CGAffineTransformMakeRotation(-angle);

}

定位 - CoreLocation - 指南针的更多相关文章

  1. 定位CoreLocation

    一.定位 iOS三种定位方式: CoreLocation 按定位的准确性: GPS(Global Positioning System全球定位系统); 蜂窝式基站; wifi; 定位顺序:1. 首选G ...

  2. AJ学IOS 之CoreLocation指南针小应用

    AJ分享,必须精品 一:效果图示 简单的用到CoreLocation获取方位做的指南针小应用 二:制作思路 具体用到了CoreLocation相关的知识,请看上一篇博客有写 然后获取方向不需要进行授权 ...

  3. iOS开发——高级篇——地理定位 CoreLocation

    一.CoreLocation 在移动互联网时代,移动app能解决用户的很多生活琐事,比如周边:找餐馆.找KTV.找电影院等等导航:根据用户设定的起点和终点,进行路线规划,并指引用户如何到达 在上述应用 ...

  4. 定位 - CoreLocation - 区域报警

    #import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewCont ...

  5. 定位 - CoreLocation - 打印位置信息

    1. 导入框架 <CoreLocation.framework>, 引入头文件 import <CoreLocation/CoreLocation.h>; 2. 创建管理者对象 ...

  6. 地图定位CoreLocation框架,地理位置编码与反编码

    在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 ...

  7. iOS学习笔记19-地图(一)定位CoreLocation

    一.定位介绍 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.要实现 ...

  8. iOS定位--CoreLocation框架

    CoreLocation框架的使用 // 首先导入头文件 #import <CoreLocation/CoreLocation.h> CoreLocation框架中所有数据类型的前缀都是C ...

  9. iOS定位--CoreLocation

    一:导入框架 #import <CoreLocation/CoreLocation.h> 二:设置代理及属性 <CLLocationManagerDelegate> @prop ...

随机推荐

  1. android94 样式和主题

    style.xml <resources xmlns:android="http://schemas.android.com/apk/res/android"> < ...

  2. IPv6 neighbor discovery

    IPv6 neighbor discovery By stretch | Thursday, August 28, 2008 at 5:03 a.m. UTC Neighbor Discovery P ...

  3. Map的遍历方式

    public class Mapper { public static void main(String[] args) {  Map<String, String> map = new ...

  4. JavaScript实现回到顶部

    HTML页面使用一个a标签,href内填写JavaScript:;以阻止默认行为,在学习实例的时候添加一个大的div来充实页面. demo: <a href="javascript:; ...

  5. SpannableString使用详解

    TextView算是android开发中最最常用的控件了,有的时候,我们要给一个TextView中的显示的文字设置不同的样式或者响应事件,比如同一个TextView中,有的字是红色,有的字是蓝色,有的 ...

  6. Mysql权限对照表

    Mysql分为5种数据权限.12种结构权限.11种管理权限,当我们需要精细化权限的时候,我们就需要对照来进行授权,这样可以很好的的控制登录人员的权限.

  7. 【腾讯Bugly干货分享】RecyclerView 必知必会

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/CzrKotyupXbYY6EY2HP_dA 导语 Re ...

  8. StringBuffer跟StringBuilder以及HashMap跟HashTable

    StringBuffer是线程安全的 HashTable是线程安全的,但HashMao单线程程序中的性能比HashTable要高,对了HashTable用(add),HashMap用的(put)

  9. C#微信公众号开发 -- (一)开发之前的准备

    本系列文章讲述的是利用C#语言开发微信公众号的实例教程,主要是服务号的开发(因为订阅号不能获取微信开发的高级接口) 想要开发微信服务公众号,首先必须要有一个认证的微信服务号,这样才能够使用微信提供的所 ...

  10. MVC小系列(十一)【Html.BeginForm与Ajax.BeginForm】

    Html.BeginForm与Ajax.BeginForm都是mvc的表单元素,前者是普通的表单提交,而后者是支持异步的表单提交,直接用mvc自带的Ajax.BeginForm就可以很容易完成一个异步 ...