iOS地图 -- 区域监听的实现和小练习
2016-09-05 23:04
176 查看
区域监听用到的方法
[self.mgr startMonitoringForRegion:region];--> 开启区域监听,没有返回值,在代理方法中得到信息并且处理信息
注:该方法只有用户位置发生变化的时候,相应的代理方法才会触发
[self.mgr requestStateForRegion:region];-->根据指定区域请求一下用户现在的位置状态(CLRegionStateUnknown, CLRegionStateInside, CLRegionStateOutside),没有返回值,同样也是在代理方法中处理信息
注:该方法在程序一启动就会请求用户的位置状态.同样当用户位置发生变化时,也会触发相应的代理方法
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region--> 进入指定区域后执行的代码
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region--> 离开指定区域后执行的代码
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region--> 在指定区域内确定了状态后触发的代理方法
区域监听的练习以及练习中的细节处理
#import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewController ()<CLLocationManagerDelegate> /** 位置管理者 */ @property(nonatomic,strong) CLLocationManager *mgr; @property (weak, nonatomic) IBOutlet UILabel *msgLabel; @end @implementation ViewController #pragma mark - 懒加载 - (CLLocationManager *)mgr { if (_mgr == nil) { _mgr = [[CLLocationManager alloc] init]; _mgr.delegate = self; // 区域监听,监听的是用户,所以应该让用户授权获取用户当前位置 if ([_mgr respondsToSelector:@selector(requestAlwaysAuthorization)]) { [_mgr requestAlwaysAuthorization]; } } return _mgr; } - (void)viewDidLoad { [super viewDidLoad]; // ###细节二:判断设备是否支持区域监听(指定区域类型,一般是圆形区域) if (![CLLocationManager isMonitoringAvailableForClass:[CLCircularRegion class]]) { return; } // 0.给定一个区域 // 0.1 区域的中点坐标 CLLocationCoordinate2D center = CLLocationCoordinate2DMake(22.22, 33.33); // 0.2区域半径 CLLocationDistance distance = 1000.0; // ###细节一:半径有限制 if (distance > self.mgr.maximumRegionMonitoringDistance) { distance = self.mgr.maximumRegionMonitoringDistance; } CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:center radius:distance identifier:@"Chaos"]; // 1.开启区域监听 代理中操作 -- 该方法只有用户位置发生了移动才会触发 // [self.mgr startMonitoringForRegion:region]; // 1.根据指定区域请求一下监听到的状态 代理中操作 -- 该方法在程序启动就会监听一下用户的位置 // 同样当用户位置发生变化时,也会触发相应的代理方法 [self.mgr requestStateForRegion:region]; } #pragma mark - CLLocationManagerDelegate /** * 进入指定区域后指定的代码 * * @param manager 位置管理者 * @param region 指定的区域 */ - (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region { NSLog(@"进入区域--"); self.msgLabel.text = @"欢迎光临--"; } /** * 离开指定区域后执行的代码 * * @param manager 位置管理者 * @param region 指定的区域 */ - (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region { NSLog(@"离开区域--"); self.msgLabel.text = @"下次再来--"; } - (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region { /* CLRegionStateUnknown, 不知道 CLRegionStateInside, 进入区域 CLRegionStateOutside 离开区域 */ if (state == CLRegionStateInside) { self.msgLabel.text = @"欢迎光临"; } else if (state == CLRegionStateOutside) { self.msgLabel.text = @"下次再来"; } } @end
相关文章推荐
- 郭克华手机编程教学视频----我的练习源码(6)实战:实现一个简单的监听程序
- ios利用MKMapView实现简单的地图
- ArcGIS for IOS 判断点是否在地图绘制的区域内(个人)
- ios监听用户是否触摸了屏幕的一种实现
- 学习iOS开发之设置地图初始显示区域为当前位置
- 郭克华手机编程教学视频----我的练习源码(4)命令按钮监听1:使用匿名类实现
- PHP+Mysql+jQuery实现中国地图区域数据统计(raphael.js)
- PHP+Mysql+jQuery实现地图区域数据统计-展示数据
- PHP+Mysql+jQuery实现地图区域数据统计-展示数据
- iOS开发练习之UIPickerView实现歌词翻滚效果
- iOS上地图画线,画线区域内的经纬度坐标点添加大头针
- ios实现类似魔兽小地图功能 在
- ios实现类似魔兽小地图功能 在
- iOS- 用MapKit和CoreLocation 来实现移动设备(地图与定位)
- IOS开发 实现电话呼叫功能以及监听电话状态
- ios利用MKMapView实现简单的地图
- IOS开发 实现电话呼叫功能以及监听电话状态
- ios 实现地图的定位,查询,自定义大头针
- php和jquery实现地图区域数据统计展示数据示例
- iOS实现UIImageView透明区域点击事件穿透