无法使用geocodeAddressString ios objective c迭代数组以绘制地图

时间:2013-10-26 14:42:29

标签: ios objective-c clgeocoder

我正在尝试遍历包含邮政编码列表的数组,然后调用geocodeAddressString函数在MapView上绘制它们。这是代码。

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


for (int i = 0; i < [[appDelegate offersFeeds] count]; i++)
{
    NSString *plotAddress = [[[appDelegate offersFeeds] objectAtIndex:i] valueForKey:@"addressline"];


    [geocoder geocodeAddressString:plotAddress completionHandler:^(NSArray *placemarks, NSError *error) {
        NSLog(@"%@", plotAddress);
    }];        
}

由于某种原因,只输出了数组中的第一个邮政编码。我希望它们都可以循环播放。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

创建CLGeocoder对象时,您一次只能使用它来对一个地址进行地理编码。如果需要多个并行请求,则需要为每个请求创建一个CLGeocoder对象。

这是一种方法(假设启用了ARC):

for (int i = 0; i < [[appDelegate offersFeeds] count]; i++)
{
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    NSString *plotAddress = [[[appDelegate offersFeeds] objectAtIndex:i] valueForKey:@"addressline"];

    [geocoder geocodeAddressString:plotAddress completionHandler:^(NSArray *placemarks, NSError *error) {
        NSLog(@"%@", plotAddress);
    }];        
}

其他信息......

请注意,Apple可能会限制您可以同时拥有多少个并行请求,因此,如果您要执行大量请求,则需要批量执行地理编码。