2015-06-18 102 views
0

我正面臨一些奇怪的問題reverseGeocodeLocation。這就是我所做的。reverseGeocodeLocation每次都不工作

我從一個view controller推到另一個。出現視圖後,我要求獲取當前位置。在didUpdateLocations delegate當我收到當前位置,我呼籲reverseGeocodeLocation獲得地點標記值。

問題

  1. 在它就像魅力
  2. 有時它會等待並顯示出較長的時間間隔後的結果
  3. 有時,我沒有得到任何結果的時間。

下面是我的代碼來獲取反向地理位置

- (void)getReverseLocation 
{ 
__block CLPlacemark* placemark; 

    CLGeocoder* geocoder = [CLGeocoder new]; 
    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) 
    { 
     if(error) 
      NSLog(@">>>>>>>> Error in reverseGeoLocation - %@", [error localizedDescription]); 

     if (error == nil && [placemarks count] > 0) 
     { 
      placemark = [placemarks lastObject]; 

      completionBlock(placemark); 
     } 
    }]; 
} 

我不知道爲什麼它的行爲像這樣。我在相同的位置和互聯網連接是好的。

這是因爲線程?我也在主線上嘗試了這一點。但同樣的問題。

編輯:我得到這個錯誤,一些嘗試

錯誤reverseGeoCodeLocation後 - The operation couldn’t be completed. (kCLErrorDomain error 8.)

+0

這是一個Web服務並具有速率和其他限制,請參閱Apple文檔。在錯誤檢查和打印錯誤,看看爲什麼。將錯誤信息添加到問題。同時顯示你的代碼,特別是completionHandler代碼。 – zaph

+0

是的Zaph,剛剛看到了文檔。我認爲沒有選擇,而不是等待它得到結果。是否有其他解決方案來獲取它? – JiteshW

+0

我想抓住錯誤。但它現在不出現。一旦我遇到它,我會分享它。 :) – JiteshW

回答

1

這是爲什麼你得到的結果有時,別人沒有。直接從蘋果的地理編碼文件

應用程序應該意識到他們如何使用地理編碼。地理編碼請求對每個應用都是速率限制的,因此在短時間內請求太多可能會導致某些請求失敗。 (當超過最大速率時,地理編碼器返回一個錯誤對象,其值爲kCLErrorNetwork到關聯的完成處理程序。)