iOS 9问题:CLGeocoder网络错误代码2

4
CLLocation *location =[[CLLocation alloc]initWithLatitude:latitude longitude:longitude];
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
    NSLog(@"Finding address");
    if (error) {
        NSLog(@"Error %@", error.description);
    } else {
        NSLog(@"%@",placemarks[0]);
    }
}]; }

enum CLError : Int {
        case LocationUnknown
        case Denied
        case Network
        case HeadingFailure
        case RegionMonitoringDenied
        case RegionMonitoringFailure
        case RegionMonitoringSetupDelayed
        case RegionMonitoringResponseDelayed
        case GeocodeFoundNoResult
        case GeocodeFoundPartialResult
        case GeocodeCanceled
        case DeferredFailed
        case DeferredNotUpdatingLocation
        case DeferredAccuracyTooLow
        case DeferredDistanceFiltered
        case DeferredCanceled
        case RangingUnavailable
        case RangingFailure
    }

这里我在IOS9设备上遇到了一个错误(模拟器上它工作得很好;-))

地理编码期间出现错误:Error Domain=kCLErrorDomain Code=2 "无法完成操作。(kCLErrorDomain错误2。)"


有一个谷歌API可以作为一个不错的替代方案。请参考我在这里的回答:https://dev59.com/fIjca4cB1Zd3GeqP18xh#40670608 - Deepak Thakur
1个回答

0

文档中说“每分钟不应发送多于一个地理编码请求”。

kCLErrorNetwork 网络不可用或发生网络错误。

实际上,该代码在IOS8IOS7中运行良好...只有在IOS 9中才会出现错误

它的工作非常完美。

CLGeocoder *geoCoder = [[CLGeocoder alloc] init];
        [geoCoder cancelGeocode];
        [geoCoder reverseGeocodeLocation:locationManager.location
                       completionHandler:^(NSArray *placemarks, NSError *error)
        {
            NSLog(@"Error is %@",error.localizedDescription);
            for (CLPlacemark *placemark in placemarks) {
                NSLog(@"%@",placemark.ISOcountryCode);
            }
        }];

输出:

  • 错误为(null)

  • 美国


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接