您的位置:首页 > 其它

101 方向和区域监测

2015-11-05 17:05 387 查看
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(@"离开监听区域时调用");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: