iOS开发之CoreLocaiton框架使用(指南针)

一、实现原理:

1.通过传感器,获取设备朝向
2.根据设备朝向反向旋转"指南针"图片

二、磁北角度  真北角度:


磁北(magnetic north)是指南针所指示的北,这主要是由于地球的磁场两极与地理上的南北两极不重合,因此指南针指示的北为磁北而非真北,磁北会随着时间而变化。

真北(True North, TN)是大家看地图或者地球仪上所有经线的起始点,也叫地理北极。真正的北极点很难测量,要用到卫星,所以我们在日常生活中地图中用到的只是磁北。


磁北角度  真北角度

三、实例代码

1.准备一张指南针的图片(下面图片可以使用)

 


指南针

 

2.导入CoreLocation框架以及对应的主头文件并且设置代理

3.懒加载创建CLLocationManager对象并设置代理

- (CLLocationManager *)lM

{

if (!_lM) {

_lM = [[CLLocationManager alloc] init];

_lM.delegate = self;

// 每隔多少度更新一次

_lM.headingFilter = 2;

}
return _lM;
}

4. 调用方法, 开始获取设备朝向  

[self.locationMstartUpdatingHeading];

5. 在对应的代理方法中获取设备朝向信息

#pragma mark - CLLocationManagerDelegate
/**

*  获取到手机朝向时调用
*
*  @param manager    位置管理者
*  @param newHeading 朝向对象
*/

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

{
/**
*  CLHeading
*  magneticHeading : 磁北角度
*  trueHeading : 真北角度
*/

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

CGFloat angle = newHeading.magneticHeading;

// 把角度转弧度
CGFloat angleR = angle / 180.0 * M_PI;

// 旋转图片
[UIView animateWithDuration:0.25 animations:^{
self.compassView.transform = CGAffineTransformMakeRotation(-angleR);
}];
}

posted @ 2016-07-31 09:09  栅栏瓶颈  阅读(414)  评论(0编辑  收藏  举报