1.方向
-(void)viewDidLoad{
[super viewDidLoad];
_mgr = [[CLLocationManager alloc]init];
_mgr.delegate = self;
// 注意:获取用户的方向信息是不需要用户授权的
[_mgr startUpdatingHeading];
}
-(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{
CGFloat angle = newHeading.magneticHeading * M_PI / 180;
/*
magneticHeading 设备与磁北的相对角度
trueHeading 设置与真北的相对角度, 必须和定位一起使用, iOS需要设置的位置来计算真北
真北始终指向地理北极点
*/
NSLog(@"------%f",angle);
}
2.区域监测:需要定位
-(void)viewDidLoad{
[super viewDidLoad];
_mgr = [[CLLocationManager alloc]init];
_mgr.delegate = self;
// 注意:如果是iOS8, 想进行区域检测, 必须自己主动请求获取用户隐私的权限
if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0 )
{
[self.mgr requestAlwaysAuthorization];
}
// 开始检测用户所在的区域
// 创建区域
//CLRegion 有两个子类是专门用于指定区域的
//一个可以指定蓝牙的范围/ 一个是可以指定圆形的范围
// 创建中心点
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.058501, 116.304171);
// c创建圆形区域, 指定区域中心点的经纬度, 以及半径
CLCircularRegion *circular = [[CLCircularRegion alloc] initWithCenter:center radius:500 identifier:@"中国"];
[_mgr startMonitoringForRegion:circular];
}
进入和离开该区域会调用以下代理方法:
// 进入监听区域时调用
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
NSLog(@"进入监听区域时调用");
}
// 离开监听区域时调用
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
NSLog(@"离开监听区域时调用");
}