提示:获取用户的方向信息是不需要授权的
先说两个方法:
- 1.CLLocationManger 调用 startUpdatingLocation会调用下面的方法(用户的位置(定位)需要获权)
//先获权后调用方法 [self.locationManger requestAlwaysAuthorization]; -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
- 2.CLLocationManger 调用 startUpdatingHeading会调用下面的方法(用户方向的不需要需要获得权限)下面是简单的指南针的调用
前提:加载一张指南针图片,其他的#import <CoreLocation/CoreLocation.h>框架都需要导入,以及定位管理对象,挂代理,遵守协议,利用对象来调用 startUpdatingHeading ,下面方法调用的前提是有真机方向发生改变
//获取到用户的方向时会被调用 -(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { NSLog(@"当用到用户的方向时会被调用"); /* magneticHeadng 设备与磁北的相对角度 trueHeading 设备与磁北的相对角度,必须和定位一起使用,ios需要设置位置来计算真北始终指向地理北极点 */ NSLog(@"%f",newHeading.magneticHeading); //1.将获取到的角度转为弧度 转换公式: 弧度 = (角度 * 兀)/ 180 CGFloat angle = newHeading.magneticHeading * M_PI / 180; //2.旋转图片 /* 顺时针 正 逆时针 负数 */ self.compasspointer.transform = CGAffineTransformIdentity;//清空 self.compasspointer.transform = CGAffineTransformMakeRotation(-angle); }
重点:角度转弧度的方法 : 弧度 = (角度 * 兀)/ 180