IOS获取当前经纬度 有时不调用代理方法
2016-03-22 18:55
260 查看
IOS获取当前经纬度
不调用代理方法一般是因为xcode升级造成的定位权限设置问题。升级xcode6以后打开以前xcode5工程,程序不能定位。工程升级到xcode6编译时需要iOS8 要自己写授权,不然没权限定位。
解决方法:
首先在 info.plist里加入对应的缺省字段 ,值设置为YES(前台定位写上边字段,前后台定位写下边字段)
NSLocationWhenInUseUsageDescription //允许在前台获取GPS的描述
NSLocationAlwaysUsageDescription //允许在前、后台获取GPS的描述
然后代码中加入
//调用请求: if ([[[UIDevice currentDevice] systemVersion] doubleValue] > 8.0) { //设置定位权限 仅ios8有意义 [self.locationMgr requestWhenInUseAuthorization];// 前台定位 // [locationManager requestAlwaysAuthorization];// 前后台同时定位 }
完整的使用方法如下:
self.locationMgr = [[CLLocationManager alloc] init];
//设置代理
self.locationMgr.delegate = self;
self.locationMgr.desiredAccuracy = kCLLocationAccuracyBest;
self.locationMgr.distanceFilter = 1000.0f;
//调用请求: if ([[[UIDevice currentDevice] systemVersion] doubleValue] > 8.0) { //设置定位权限 仅ios8有意义 [self.locationMgr requestWhenInUseAuthorization];// 前台定位 // [locationManager requestAlwaysAuthorization];// 前后台同时定位 }
//开始定位
[self.locationMgr startUpdatingLocation];
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *cl = [locations objectAtIndex:0]; NSLog(@"纬度----%f",cl.coordinate.latitude); NSLog(@"经度----%f",cl.coordinate.longitude); //停止定位 [self.locationMgr stopUpdatingLocation]; } //获取定位失败回调方法 #pragma mark - location Delegate - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog(@"Location error!"); }
相关文章推荐
- iOS CocoaPods 私有库 steps and tips
- ios 改变push方向,可以把present改为push方式
- iOS限制文本框输入两位小数和最大值
- iOS开发,主动让内存溢出
- IOS-录音
- ios linking 链接错误
- IOS沙盒机制
- IOS真机测试教程
- iOS应用程序的生命周期及前后台切换,应用的各种状态)
- iOS7以后,sizeWithFont方法被弃用。
- 仿36氪(iOS版附源代码)
- iOS9以后label上的文字frame与之前的frame有出入。
- iOS开发: 做真机测试时 遇到的 bitcode 的问题
- iOS开发关于三方框架的使用注意的地方,跟新到最新的SDK
- iOS 利用 strtoul 进行 进制转换
- iOS 最新版 CocoaPods 的安装流程
- iOS 打包错误 command..exit code 127...
- IOS开发之—程序截图
- IOS加减选择器
- iOS 之新特性界面