Objective c 发布前向地理编码多个地址

Objective c 发布前向地理编码多个地址,objective-c,ios5,geocode,clgeocoder,Objective C,Ios5,Geocode,Clgeocoder,我正在连接一个远程web服务,它基本上返回XML。然后我将XML解析为一个属性对象(想想真实状态之类的东西) 但是现在,web服务仅返回每个属性的邮政编码。它不提供我在地图中放置注释所需的坐标。我可以通过邮政编码对地址进行地理编码。但是,我的问题是它不允许我执行多个请求 这是我的密码 - (void)processProperties:(Property *)property { [geocoder geocodeAddressString:property.postalCode

我正在连接一个远程web服务,它基本上返回XML。然后我将XML解析为一个属性对象(想想真实状态之类的东西)

但是现在,web服务仅返回每个属性的邮政编码。它不提供我在地图中放置注释所需的坐标。我可以通过邮政编码对地址进行地理编码。但是,我的问题是它不允许我执行多个请求

这是我的密码

- (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属性进行地理编码。没有相应地通过循环


各位有什么想法吗?

在你的前进地理功能中使用这个。geocoder需要重新发布和初始化才能开始一个新地址,希望这能有所帮助

- (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];
             }];
  }

苹果似乎建议每个应用程序会话只进行一次地理编码,这是非常有限的。你是对的,他们似乎通过只允许一个实例一次调用来强制执行这一点。创建多个实例解决了这个问题,但必须这样做确实是件奇怪的事情。