2015-06-18 2 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); 
     } 
    }]; 
} 

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

Это из-за потоков? Я тоже пробовал это на главной теме. Но та же проблема.

Edit: Я получил эту ошибку, после некоторых попыток

ошибок в reverseGeoCodeLocation - The operation couldn’t be completed. (kCLErrorDomain error 8.)

+0

Это веб-сервис с ограничениями и другими ограничениями, см. Документацию Apple. При ошибке проверьте и распечатайте ошибку, чтобы понять, почему. Добавьте информацию об ошибке в вопрос. Также покажите свой код, особенно код completeHandler. – zaph

+0

Да Заф, Просто посмотрел документацию. Я думаю, что нет выбора, а не ждать его, чтобы получить результат. Есть ли другое решение для его получения. – JiteshW

+0

Я пытаюсь поймать ошибку. но теперь он не появляется. Как только я наткнулся на это, я поделюсь им. :) – JiteshW

ответ

1

Вот почему вы получите результаты иногда, другие нет. Прямо из документации Apple по геокодированию

Приложения должны быть осведомлены о том, как они используют геокодирование. Запросы на геокодирование ограничены по скорости для каждого приложения, поэтому выполнение слишком большого количества запросов за короткий промежуток времени может привести к сбою некоторых запросов. (Когда максимальная скорость превышена, геокодер возвращает объект ошибки со значением kCLErrorNetwork соответствующему обработчику завершения.)