我正在尝试遍历包含邮政编码列表的数组,然后调用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);
}];
}
由于某种原因,只输出了数组中的第一个邮政编码。我希望它们都可以循环播放。有什么想法吗?
答案 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可能会限制您可以同时拥有多少个并行请求,因此,如果您要执行大量请求,则需要批量执行地理编码。