iOS开发-地图02-指南针

2016-02-10  本文已影响279人  MonkeyHeng
#import "ViewController.h"  
#import <CoreLocation/CoreLocation.h>  
  
@interface ViewController ()<CLLocationManagerDelegate>  
  
@property (nonatomic, strong) CLLocationManager *manager;  
@property (nonatomic, strong) UIImageView *imageView;  
  
@end  
  
@implementation ViewController  
  
- (void)viewDidLoad {  
    [super viewDidLoad];  
    // Do any additional setup after loading the view, typically from a nib.  
      
    self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg_imageView"]];  
    self.imageView.center = self.view.center;  
    [self.view addSubview:self.imageView];  
      
    // 指南针需要在设备上才可以测试 在模拟器无法测试  
    self.manager.delegate = self;  
    // 获取方向不需要授权  
    [self.manager startUpdatingHeading];  
      
    // 区域检测需要位置所以对于iOS8需要请求权限  
    [self.manager requestAlwaysAuthorization];  
      
      
    // 121.551331,38.889706  
    CLLocationCoordinate2D center = CLLocationCoordinate2DMake(38.889706, 121.551331);  
    CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:center radius:500 identifier:@"数码广场"];  
      
    [self.manager startMonitoringForRegion:region];  
      
}  
  
/** 
 *  进入区域 
 * 
 *  @param manager 触发事件的对象 
 *  @param region  进入哪个区域 
 */  
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {  
    NSLog(@"进入 %@", region.identifier);  
}  
  
/** 
 *  退出区域 
 * 
 *  @param manager 触发事件的对象 
 *  @param region  退出哪个区域 
 */  
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {  
    NSLog(@"退出 %@", region.identifier);  
}  
  
/** 
 *  获取用户的方向 
 * 
 *  @param manager    触发事件的对象 
 *  @param newHeading 获取到的方向信息 
 */  
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {  
//    获取到的为与磁北或者真北的夹角  
//    获取到的磁北的角度 magneticHeading  
//    获取到的真北的角度 trueHeading  
    NSLog(@"%.f", newHeading.magneticHeading);  
    [manager stopUpdatingHeading];  
}  
  
- (CLLocationManager *)manager {  
    if (_manager == nil) {  
        _manager = [[CLLocationManager alloc] init];  
    }  
    return _manager;  
}  
  
- (void)didReceiveMemoryWarning {  
    [super didReceiveMemoryWarning];  
    // Dispose of any resources that can be recreated.  
}  
  
@end 
上一篇 下一篇

猜你喜欢

热点阅读