Выпуск прямого геокодирования нескольких адресов
Я подключаюсь к удаленному веб-сервису, который в основном возвращает XML обратно. Затем я анализирую этот XML в объект Property (думаю, что-то вроде реального состояния)
Но теперь веб-служба возвращает почтовый индекс только для каждого свойства. Он не обеспечивает координаты, которые мне нужны для размещения аннотации на карте. Я могу геокодировать адрес при условии почтового индекса. Тем не менее, моя проблема заключается в том, что не позволяет мне делать несколько запросов
Вот мой код
- (void)processProperties:(Property *)property {
[geocoder geocodeAddressString:property.postalCode
completionHandler:^(NSArray* placemarks, NSError* error){
placemark = [placemarks lastObject];
for (CLPlacemark* aPlacemark in placemarks)
{
[sublet setLatitude:aPlacemark.location.coordinate.latitude];
[sublet setLongitude:aPlacemark.location.coordinate.longitude];
}
}];
}
- (void)addAnnotations:(NSArray *)objects {
CLLocationDegrees lat;
CLLocationDegrees longitude;
CLLocationCoordinate2D mCoords;
NSString *fullAddress;
// Add the annotations found nearby
for (Property *property in objects) {
[self processProperties:property];
lat = property.latitude;
longitude = property.longitude;
fullAddress = [NSString stringWithFormat:@"%@ %@ %@", property.houseNumber, @" ", property.streetName];
[self createAnnotationWithCoords:mCoords :fullAddress :[NSString stringWithFormat:@"$%.2f", property.rent]];
}
zoomLevel = 0.1;
mCoords = CLLocationCoordinate2DMake(lat,longitude);
MKCoordinateRegion region = MKCoordinateRegionMake(mCoords,MKCoordinateSpanMake(zoomLevel,zoomLevel));
[self.mapView setRegion:region animated:YES];
}
По какой-то причине это просто геокодирование 1 свойство. Не проходит через цикл соответственно.
Есть идеи, ребята?
1 ответ
Используйте это в вашей прямой гео-функции. Геокодер должен быть освобожден и инициализирован снова, чтобы начать новый адрес, надеюсь, это поможет.
- (void)processProperties:(Property *)property {
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:property.postalCode
completionHandler:^(NSArray* placemarks, NSError* error){
placemark = [placemarks lastObject];
for (CLPlacemark* aPlacemark in placemarks)
{
[sublet setLatitude:aPlacemark.location.coordinate.latitude];
[sublet setLongitude:aPlacemark.location.coordinate.longitude];
}
[geocoder release];
}];
}