#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
// ~/Library/Developer/Xcode/UserData
@interface ViewController () <CLLocationManagerDelegate>
@property (nonatomic, strong) CLLocationManager *manager;
// 指南针
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Heading 表示方向
// 方向信息不会涉及用户隐私, 因此不需要授权
// 开始获取设备的方向信息
[self.manager startUpdatingHeading];
}
#pragma mark CLLocationManagerDelegate
// 方向信息更新后触发
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
// CLHeading 表示 方向相关的信息, 磁北, 真北, 时间, 精确度
// trueHeading 真北, 代表地理北极
// magneticHeading 磁北, 代表磁场的北极
// 磁北偏移量, 0 - 359.9, 顺时针增加, 磁北方向的值为0
NSLog(@"真北: %f, 磁北: %f", newHeading.trueHeading, newHeading.magneticHeading);
// [self.manager stopUpdatingHeading];
// 角度 转化成 弧度
CGFloat angle = newHeading.magneticHeading / 180.0 * M_PI;
// 旋转方向
self.imageView.transform = CGAffineTransformMakeRotation(-angle);
}
#pragma mark - Getter & Setter
- (CLLocationManager *)manager
{
if (_manager == nil) {
_manager = [[CLLocationManager alloc] init];
// 通过代理进行的数据回调
_manager.delegate = self;
}
return _manager;
}
@end
实用知识:CoreLocation的使用(获取方向)
最新推荐文章于 2017-06-17 22:06:50 发布