【问题标题】:CLGeocoder returning error : The operation couldn’t be completed. (kCLErrorDomain error 8.)CLGeocoder 返回错误:操作无法完成。 (kCLErrorDomain 错误 8。)
【发布时间】:2014-03-04 16:27:19
【问题描述】:

一旦我得到地址字符串,我就会调用这个函数:

[[self geocoder] geocodeAddressString:addressString completionHandler:^(NSArray *placemarks, NSError *error) {
            if (error) {
                block(nil, nil, error);
            } else {
                CLPlacemark *placemark = [placemarks onlyObject];
                block(placemark, self.name, error);
            }
        }];

它将地标返回为 nil,错误返回为: Error Domain=kCLErrorDomain Code=8 "操作无法完成。(kCLErrorDomain error 8.)"

我的地址字符串是从这个字典中检索到的 placeDictionary[@"formatted_address"]:

placeDictionary = 
{
"address_components" =     (
            {
        "long_name" = "Palolem Beach";
        "short_name" = "Palolem Beach";
        types =             (
            "natural_feature",
            establishment
        );
    },
            {
        "long_name" = "South Goa";
        "short_name" = "South Goa";
        types =             (
            "administrative_area_level_2",
            political
        );
    },
            {
        "long_name" = Goa;
        "short_name" = GA;
        types =             (
            "administrative_area_level_1",
            political
        );
    },
            {
        "long_name" = India;
        "short_name" = IN;
        types =             (
            country,
            political
        );
    }
);
"adr_address" = "Palolem Beach, <span class=\"region\">Goa</span>";
"formatted_address" = "Palolem Beach, Goa";
geometry =     {
    location =         {
        lat = "15.0099648";
        lng = "74.02321859999999";
    };
    viewport =         {
        northeast =             {
            lat = "15.012671";
            lng = "74.0272093";
        };
        southwest =             {
            lat = "15.0050025";
            lng = "74.0164053";
        };
    };
};
icon = "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png";
id = b286a0f7f047e162b3cab2ab3328ce95d26bdb52;
name = "Palolem Beach";
reference = "CnRwAAAAh2ZORbEpxNv5HnZlQRY_VxKLdvAd16OusSwtBlAKibDFP6roT2idnPvm-XRgMlw3iqUsZujVFrOOns76fK9we3Uddt4b3GgcWZoSqSgoYGtbHh1l5PEL_0VAwaUcswomroA3sjd3dN8lXyBSvafrrxIQONHTpwpn6IvGtYZ12pZ5ixoUENbjRTo3dCrN3aoZTM0k5EPXAjA";
types =     (
    "natural_feature",
    establishment
);
url = "https://maps.google.com/maps/place?q=Palolem+Beach&ftid=0x3bbe4551d05b02bb:0x1e1bc67d4b0fbbf5";

}

即使我使用方法:

[[self geocoder] geocodeAddressDictionary:placeDictionary completionHandler:^(NSArray *placemarks, NSError *error){

}];

它返回同样的错误。

【问题讨论】:

  • 只是好奇:如果您的字典已经有地址的坐标,为什么还要调用 geocodeAddressString?
  • CLGeocoder 不可靠.. 至少在印度不可靠.. 确保调用 google api 以获取来自 lat long 的地址。在上面的链接中参考我的答案。

标签: ios objective-c geolocation cllocation clgeocoder


【解决方案1】:

如果 Apple 的 Geocoder 对提供的地址一无所知,则会出现此错误。

根据Apple documentation代码8表示kCLErrorGeocodeFoundNoResult

【讨论】:

    【解决方案2】:

    我认为它会给您错误,因为地理编码器无法找到该位置。

    检查这段代码,我已经修改了它

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:@"Palolem Beach, Goa, India" completionHandler:^(NSArray* placemarks, NSError* error){
        if (!error) {
    
            for (CLPlacemark* aPlacemark in placemarks)
            {
                NSLog(@"place--%@", [aPlacemark locality]);
                NSLog(@"lat--%f\nlong--%f",aPlacemark.location.coordinate.latitude,aPlacemark.location.coordinate.longitude);
            }
        }
        else{
    
            NSLog(@"error--%@",[error localizedDescription]);
        }
    }];
    

    【讨论】:

      【解决方案3】:

      我最近发现,当使用美国邮政编码时,例如对于马萨诸塞州的 01844,如果您在我放弃 0 并且刚刚通过 1844 之后继续使用 0,它将无法正常工作。

      【讨论】:

      • 我最终向 Apple 报告了这个问题,现在它已经得到修复。你可以离开程序0
      猜你喜欢
      • 2012-03-20
      • 2015-06-03
      • 2016-10-22
      • 2014-01-04
      • 2012-12-03
      • 2013-10-21
      • 2018-10-24
      • 2017-01-22
      • 1970-01-01
      相关资源
      最近更新 更多