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);
}];
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容