一、实现原理:
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);
}];
}
网友评论