Подтвердить что ты не робот

Адрес геокодирования в координатах в iphone

Я пытаюсь геокодировать адрес в координатах, используя следующий код:

CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:@"6138 Bollinger Road, San Jose, United States" completionHandler:^(NSArray* placemarks, NSError* error){
                     for (CLPlacemark* aPlacemark in placemarks)
                     {
                         // Process the placemark.
                         NSString *latDest1 = [NSString stringWithFormat:@"%.4f",aPlacemark.location.coordinate.latitude];
                         NSString *lngDest1 = [NSString stringWithFormat:@"%.4f",aPlacemark.location.coordinate.longitude];
                         lblDestinationLat.text = latDest1;
                         lblDestinationLng.text = lngDest1;
                     }
                 }];

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

С уважением
Панкай

4b9b3361

Ответ 1

Хорошо, я нашел свою ошибку. Код правильный и работает отлично. Все это время я работал над этим отладчиком и пытался выяснить, почему отладчик не входил в блок. Но теперь я обнаружил, что отладчик не входит в блок в тот момент. Для получения значений местоположения требуется немного. Это выполняется асинхронно, поэтому я не смог его найти, и я получал сбой из-за отсутствия значений сразу после аварии. Я переместил блок ввода кода в блок, и теперь все работает отлично.

Ответ 2

Я просто запустил этот точный код, и он работал, как ожидалось. Убедитесь, что у вас есть активное интернет-соединение.

Попробуйте добавить NSLog в строки и посмотреть, будет ли он вызван.

NSLog(@"lat: %@, lng: %@", latDest1, lngDest1);

Запускаете ли вы его в симуляторе или устройстве?

Ответ 3

Блоки - это новые функции для Objective C от iOS4.0 и выше. Блок, который вы можете представить как метод делегата, работающий в одном функциональном блоке. Что касается любого метода делегата, требуется время для вызова, в зависимости от условия, тот же самый блок выполняет код внутри него, когда он завершает свою работу по геокодированию. Вы можете больше узнать о документации Блок в яблоках или прочитать http://www.raywenderlich.com/9438/how-to-use-blocks-in-ios-5-tutorial-part-2.

Вы также можете посмотреть мой репозиторий на GITHUB https://github.com/Mangesh20/geocoding