CLGeocoder возвращает ошибку: операция не может быть завершена. (Ошибка kCLErrorDomain 8.)

Я вызываю эту функцию, как только получаю addressString:

[[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);
            }
        }];

Он возвращает метки как ноль, а ошибку как: 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){

}];

Он возвращает мне ту же ошибку.


person tech savvy    schedule 07.02.2014    source источник
comment
Просто любопытно: зачем вы вызываете geocodeAddressString, если в вашем словаре уже есть координаты адреса?   -  person    schedule 07.02.2014
comment
stackoverflow.com/a/40670608/2033377   -  person Deepak Thakur    schedule 18.11.2016
comment
CLGeocoder ненадежен .. По крайней мере, не в Индии .. Убедитесь, что вы вызываете google api, чтобы получить адрес от долгого латинского алфавита. обратитесь к моему ответу по ссылке выше.   -  person Deepak Thakur    schedule 18.11.2016


Ответы (3)


Вы получаете эту ошибку, если Apple Geocoder ничего не знает о предоставленном адресе.

Согласно документации Apple код 8 означает kCLErrorGeocodeFoundNoResult

person Alexey Shikov    schedule 24.01.2015

Я думаю, это дает вам ошибку, потому что геокодер не может найти местоположение.

проверьте этот код, я его изменил

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]);
    }
}];
person Pawan Rai    schedule 07.02.2014

Недавно я обнаружил, что при использовании почтового индекса США, например 01844 для Массачусетса это не сработает, если у вас будет 0, как только я сбросил 0 и только что прошел 1844, он работал нормально.

person J_B_UK    schedule 19.10.2020
comment
В итоге я сообщил об этой проблеме в Apple, и теперь она исправлена. вы можете оставить продолжение 0 - person J_B_UK; 13.01.2021