#import "ViewController.h"
#import 《CoreLocation/CoreLocation.h》
@interfaceViewController()
/**位置管理者*/
@property(nonatomic,strong)CLLocationManager*locationM;
@end
@implementationViewController
#pragma mark -懒加载
-(CLLocationManager*)locationM
{
if(!_locationM) {
//1创建位置管理者
_locationM= [[CLLocationManageralloc]init];
// 1.1告诉外界位置的方案:代理, block通知
_locationM.delegate=self;
//设置每隔多远定位一次(1次111km/100m)
//最新的位置距离上一次位置之间的距离大于100m,才会通过代理告诉外界
//_locationM.distanceFilter = 100;
//kCLLocationAccuracyBestForNavigation //最适合导航
//kCLLocationAccuracyBest; //最好的
//kCLLocationAccuracyNearestTenMeters; //附近10米
//kCLLocationAccuracyHundredMeters; // 100米
//kCLLocationAccuracyKilometer; // 1000米
//kCLLocationAccuracyThreeKilometers; // 3000米
//定位精确度
//定位精确度越高,越耗电,而且,定位时间越长
_locationM.desiredAccuracy=kCLLocationAccuracyBest;
}
return_locationM;
}
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
// 2.使用位置管理者,开始获取用户位置
//开发经验: start开始某个服务stop停止某个服务
//一旦调用了这个方法,那么就会不断的获取用户位置信息,然后告诉外界
//默认情况,只能在前台获取用户位置信息,如果我们想要在后台获取位置,必须勾选后台模式location updates
//标准定位服务(基于gps/wifi/基站)
[self.locationMstartUpdatingLocation];
//监听重大位置的改变(基于基站进行定位,要求,设备必须有电话模块)
[self.locationMstartMonitoringSignificantLocationChanges];
}
#pragma mark -CLLocationManagerDelegate
//当获取到用户位置信息时调用
// manager :位置管理者
// locations:位置数组
-(void)locationManager:(CLLocationManager*)manager didUpdateLocations:(NSArray*)locations
{
NSLog(@"定位到了");
//一般我们开发中,获取到用户位置信息之后,做一些业务逻辑操作
//针对于定位一次的情况,可以在定位到之后停止获取用户位置
//[manager stopUpdatingLocation];
}
@end