CLGeocoder 反向地理编码失败,错误域=NSURLErrorDomain 代码=-1000 -

Posted

技术标签:

【中文标题】CLGeocoder 反向地理编码失败,错误域=NSURLErrorDomain 代码=-1000 -【英文标题】:CLGeocoder reverse geocoding fails with Error Domain=NSURLErrorDomain Code=-1000 - 【发布时间】:2014-03-19 16:42:10 【问题描述】:

使用 CLLocation 对象(内容例如纬度 = 48.196169,经度 = 11.620237),我尝试获取当前城市和国家/地区,例如:

if(!geocoder) 
    geocoder = [[CLGeocoder alloc] init];


if (geocoder.geocoding) [geocoder cancelGeocode];
    [geocoder reverseGeocodeLocation:lo completionHandler:^(NSArray *placemarks, NSError *error) 
    if(devMode) 
        NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
    

    if (error == nil && [placemarks count] > 0) 
        // MY CODE - here placemarks is always (null)
     else 
        if(devMode)
            NSLog(@"%@", error.debugDescription);
    
];

大多数情况下,效果很好。但在极少数情况下,我只会收到错误消息:

PBRequester 失败,错误域=NSURLErrorDomain 代码=-1000 “Ungültige URL”用户信息=0x16f5ff30 NSUnderlyingError=0x16f57810 "Ungültige URL", NSLocalizedDescription=Ungültige URL

找到地标:(null),错误:Error Domain=kCLErrorDomain Code=2 "操作无法完成。(kCLErrorDomain error 2.)"

我完全不知道为什么会发生这种情况。

【问题讨论】:

【参考方案1】:

可以用下面的代码找到地址行,这里要传入经纬度作为参数

- (void)findAddress:(CLLocationDegrees)latitude with:(CLLocationDegrees)longitude
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]);
    
]; 

这里你必须导入以下内容 #import <CoreLocation/CLGeocoder.h>

【讨论】:

以上是关于CLGeocoder 反向地理编码失败,错误域=NSURLErrorDomain 代码=-1000 -的主要内容,如果未能解决你的问题,请参考以下文章

对用于反向地理编码位置的 CLGeocoder 类方法感到困惑

CLGeocoder 反向地理编码位置。第一次在 [placemarks count = 0]?

在 iPhone 上进行反向地理编码 - 获取准确的街道号码

如何在 iOS 中使用反向谷歌地理编码?

iOS 6 中的本地化地理编码选项

基于CLGeocoder - 地理编码