【问题标题】:CLGeocoder forward geocoding multiples LocationsCLGeocoder 转发地理编码多个位置
【发布时间】:2012-11-02 21:51:40
【问题描述】:

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

-(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 的文档,我知道我当时只能发送一个请求。

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

【问题讨论】:

    标签: ios ios6 mapkit clgeocoder


    【解决方案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-14 12:38:57.987 SRMIpadTest2[32594:3c03] -[__NSArrayI length]: unrecognized selector sent to instance 0x8912000 2012-11-14 12:38: 57.988 SRMIpadTest2[32594:3c03] *** 由于未捕获的异常而终止应用程序 - 只要调用地理编码器。
    • 使用虚拟地址检查 NSString *addressString = @"1 Infinite Loop, Cupertino, CA" 并评论这一行 pa.title = [self.sitePC valueForKey:@"siteName"];然后运行..如果它仍然崩溃,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多