首页 > 代码库 > 如何使iOS获取的地理位置有效
如何使iOS获取的地理位置有效
关于CLLocationManager获取地理位置遇到的一些小事;
项目使arc
第一步:获取是否允许定位
-(BOOL)IsLocationServicesEnabled{ /** * [CLLocationManager locationServicesEnabled] 系统设置允许定位服务是否开启 * [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied APP是否开启定位服务 */ return ([CLLocationManager locationServicesEnabled] && [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied);}
第二步:开始定位,创建全局变量 (个人理解:如果CLLocationManager的属性不是全局的在ARC项目中,出了函数体 局部变量就会被release)
@property (nonatomic, strong) CLLocationManager *userLocation;
-(void)getUserLocationInfomation{ if ([self IsLocationServicesEnabled]) { if (!self.userLocation) { self.userLocation = [[CLLocationManager alloc]init]; } self.userLocation.delegate = self; //选择定位的方式为最优的状态 self.userLocation.desiredAccuracy = kCLLocationAccuracyBest; //发生事件的最小距离间隔 self.userLocation.distanceFilter = kCLDistanceFilterNone; [self.userLocation startUpdatingLocation]; }}
第三部分:delegate回调
#pragma locationManager delegate-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow]; if (locationAge > 180.0) return; // 测试该水平精度是否有效 if (newLocation.horizontalAccuracy < 0) return; // 写你的代码 现在拿到的newLocation是有效的
[self.userLocation stopUpdatingLocation];
self.userLocation.delegate = nil;
}-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ }
如何使iOS获取的地理位置有效
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。