环境:XCODE6.4 + iPhone / iOS8
一 错误:使用CoreLocation获取地理位置信息,报错
Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"
解决方法:
1.确定模拟器(手机)已经联网并且允许程序获取地理位置
2.模拟器位置已设置(可以设置自定义)
2.重置地理位置服务或者网络服务
PS:如果是模拟器就果断直接重置模拟器吧 IOS Simulator - Reset Content and Settings..
二 ios8.0下的定位服务需要申请授权.具体代码如下:
if ([CLLocationManager locationServicesEnabled]) {
self.locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
_locationManager.desiredAccuracy = kCLLocationAccuracyBest; //控制定位精度,越高耗电量越大。
_locationManager.distanceFilter = 100; //控制定位服务更新频率。单位是“米”
[_locationManager startUpdatingLocation];
//在ios 8.0下要授权
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
[_locationManager requestWhenInUseAuthorization]; //调用了这句,就会弹出允许框了.
}
注意:
在Info.plist文件还要加上
NSLocationWhenInUseUsageDescription 描述、、为什么使用定位
NSLocationAlwaysUsageDescription string “提示描述”
#pragma mark - CLLocationManagerDelegate
//定位到用户位置时调用定位比较频繁
- (void)locationManager:(CLLocationManager*)manager didUpdateLocations:(NSArray*)locations{
CLLocation*currLocation = [locationslastObject];
NSLog(@"经度=%f纬度=%f高度=%f", currLocation.coordinate.latitude, currLocation.coordinate.longitude, currLocation.altitude);
NSLog(@"locationManager---%ld",locations.count);
}
- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error
{
if([errorcode] ==kCLErrorDenied)
{
//访问被拒绝
NSLog(@"访问被拒绝");
}
if([errorcode] ==kCLErrorLocationUnknown) {
//无法获取位置信息
NSLog(@"无法获取位置信息---%@",error);
}
}
网友评论