2014-02-07 98 views
10

我調用這個函數,一旦我得到了addressString:CLGeocoder返回錯誤:操作無法完成。 (kCLErrorDomain誤差8)

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

它返回標爲無錯爲: 錯誤域= kCLErrorDomain代碼= 8「的操作不能。完成(kCLErrorDomain錯誤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){ 

}];

它返回我相同的錯誤。

+1

只是好奇:你爲什麼要打電話geocodeAddressString如果你的字典已經有地址的座標? – Anna

+1

http://stackoverflow.com/a/40670608/2033377 –

+0

CLGeocoder是不可靠的..不在印度atleast ..確保你打電話谷歌API獲取地址從拉多長。請參閱上述鏈接中的答案。 –

回答

3

我認爲它給你錯誤,因爲,地理編碼器無法找到位置。

檢查這個代碼,我已經修改了它

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

你得到的情況下,這種錯誤蘋果的地理編碼一無所知提供的地址。

根據Apple documentation碼8意味着kCLErrorGeocodeFoundNoResult

相關問題