複数アドレスの順方向ジオコーディングを発行する

私は基本的にXMLを返すリモートWebサービスに接続しています。私はそのXMLをPropertyオブジェクトに解析しています(実際の状態のことを考える)

But now, the web service returns a postal code for each property alone. It does not provide a coordinate which is what I need to place an annotation in the map. I am able to geocode an address provided a postal code. However, my problem is it is not allowing me to do multiple requests

ここに私のコードです

- (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つのプロパティをジオコーディングしているだけです。それに応じてループを通過していない。

任意のアイデアの人々ですか?

3

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];
             }];
  }
6
追加された
Appleはアプリケーションセッションごとに1つのジオコーディングしか行わないことを推奨しているようですが、これは非常に限定的です。あなたはインスタンス1コールだけを許可することでこれを強制しているようです。複数のインスタンスを作成することで問題は解決しますが、実行する必要があることは確かに奇妙なことです。
追加された 著者 akaru,