101 方向和區域監測

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(@"離開監聽區域時調用");
}
發佈了124 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章