0

嗨,我正在使用此方法获取坐标并将图钉添加到地图视图以获取一个邮政编码

-(void)myMapview
{
    //sitePC is an Array with the Post code location
    NSString *addressString = [self.sitePC valueForKey:@"sitePC"];

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];

    [geocoder geocodeAddressString:addressString completionHandler:^(NSArray *placemarks, NSError *anError)

     { for(CLPlacemark *placemark in placemarks) {
             NSLog(@"Placemark: %@",placemark);

             MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];

             pa.coordinate = placemark.location.coordinate;
             pa.title = [self.sitePC valueForKey:@"siteName"];
             [self.mapview addAnnotation:pa];

         }          if(anError)
         { NSLog(@"Error: %@",[anError description]); }         
     }];
}

但是现在 sitePC 数组包含 10 个要处理的邮政编码,我阅读了 CLGeocoder 的文档,我知道我当时只能发送一个请求。

我的问题是,对于每个邮政编码,我如何一次只发送一个请求?

4

1 回答 1

1

您可以为注释创建一个数组并在 MapView 上添加该注释数组。希望以下代码更改对您有所帮助。

NSString *addressString = [self.sitePC valueForKey:@"sitePC"];

CLGeocoder *geocoder = [[CLGeocoder alloc] init];

[geocoder geocodeAddressString:addressString completionHandler:^(NSArray *placemarks, NSError *anError)

 { 
    NSMutableArray *pointsArray = [[NSMutableArray alloc]init]
     for(CLPlacemark *placemark in placemarks) {
         NSLog(@"Placemark: %@",placemark);

         MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];

         pa.coordinate = placemark.location.coordinate;
         pa.title = [self.sitePC valueForKey:@"siteName"];
         [pointsArray addObject:pa];
     }  
     [self.mapview addAnnotations:pointsArray];
  if(anError)
     { NSLog(@"Error: %@",[anError description]); }         
 }];
于 2012-11-14T12:15:40.810 回答