1.iOS8以前使用CLLocationManager
- 1.导入头文件
<CoreLocation/CoreLocation.h>
- 2.创建位置管理者
CLLocationManager
, 并添加到属性。 - 3.设置代理、遵守协议、实现代理方法,在代理方法中获取位置信息
- 4.调用开始更新位置方法
-
5.设置
每隔多远定位一次
和精确度
,精确度越高越耗电,定位时间越长// 1.设置位置管理者属性 @property (nonatomic, strong) CLLocationManager *lcManager; // 2.判断是否打开了位置服务 if ([CLLocationManager locationServicesEnabled]) { // 创建位置管理者对象 self.lcManager = [[CLLocationManager alloc] init]; self.lcManager.delegate = self; // 设置代理 // 设置定位距离过滤参数 (当本次定位和上次定位之间的距离大于或等于这个值时,调用代理方法) self.lcManager.distanceFilter = 100; self.lcManager.desiredAccuracy = kCLLocationAccuracyBest; // 设置定位精度(精度越高越耗电) [self.lcManager startUpdatingLocation]; // 开始更新位置 } /** 获取到新的位置信息时调用*/ -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { NSLog(@"定位到了"); } /** 不能获取位置信息时调用*/ -(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog(@"获取定位失败"); }
- 6.请求授权,iOS6之后,苹果开始加强保护用户隐私,在
Info.plist
文件中定义Key
提醒用户,提高用户允许定位的概率。
- 7.如果要后台定位,需要打开后台模式
2.iOS8.0之后使用CLLocationManager
- 1.iOS8之后,苹果又进一步加强了隐私保护,不