2014-04-30 4 views
0

У меня возникла странная проблема с - (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;.CLGeocoder возвращает только первый результат поиска

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

for (Trip *trip in takenTrips) { 
    [geoCoder geocodeAddressString:trip.location completionHandler:^(NSArray *placemarks, NSError *error) { 
     //handling result 
    }]; 
} 

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

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

Любые предложения приветствуются!

ответ

0

Приложения должны быть осведомлены о том, как они используют геокодирование. правила для эффективного использования этого класса: отправьте не более одного запроса на геокодирование для любого действия пользователя. class link

Чтобы решить проблему, вы могли бы одно из следующих действий:

  1. Do-While цикл, который проверяет, является ли Геокодер обработки геокодируете
  2. NSOperationQueue в excucute один момент времени, если он полный
  3. в completeHandle выполняет обратный вызов, который запускает следующий геокод
+0

О, я не знаю об этом. Я сделаю это последовательно. – Selkie

0

Почему бы вам не использовать больше геокодер?

dispatch_queue_t geocoderQueue = dispatch_queue_create("geocoder.queue", DISPATCH_QUEUE_CONCURRENT); 
dispatch_apply([takenTrips count], dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ull), ^(size_t index) { 

    NSString *loc = [(Trip *)takenTrips[index] location]; 

    CLGeocoder *geoCoder = [CLGeocoder new]; 
    [geoCoder geocodeAddressString:loc completionHandler:^(NSArray *placemarks, NSError *error) { 
     CLPlacemark *placemark = [placemarks firstObject]; 
     NSLog(@"%@",placemark.postalCode); 
    }]; 
}); 

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

Смежные вопросы