我正在尝试使用以下代码将地址解析2地名转发到坐标中:

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

[geocoder geocodeAddressString:place
                      inRegion:nil
             completionHandler:^(NSArray* placemarks, NSError* error){
                 NSLog(@"a");
                 NSLog(@"count %d", [placemarks count]);
                 for (CLPlacemark* aPlacemark in placemarks) {
                     CLLocationCoordinate2D coord = aPlacemark.location.coordinate;

                     NSLog(@"%f, %f", coord.latitude, coord.longitude);
                 }
             }];

[geocoder geocodeAddressString:place
                      inRegion:nil
             completionHandler:^(NSArray* placemarks, NSError* error){
                 NSLog(@"b");
                 NSLog(@"count %d", [placemarks count]);
                 for (CLPlacemark* aPlacemark in placemarks) {
                     CLLocationCoordinate2D coord = aPlacemark.location.coordinate;

                     NSLog(@"%f, %f", coord.latitude, coord.longitude);
                 }
             }];

为简化起见,我将一个地名转换了两次。运行代码时,仅运行第一个地理编码完成处理程序。其余的地理编码完成处理程序将被忽略。

我想知道为什么会发生以及如何转换多个地方。

最佳答案

请参阅苹果公司的指南:
http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLGeocoder_class/Reference/Reference.html

应用程序应意识到它们如何使用地理编码。这是
有效使用此类的一些经验法则:

1)对于任何一项用户操作,最多发送一个地理编码请求。

2)如果用户执行涉及地理编码的多个操作,
相同的位置,重复使用初始地理编码请求的结果
而不是针对每个操作启动单独的请求。

3)当您想自动更新用户的当前位置时
(例如,当用户移动时),仅发出新的地理编码请求
当用户移动了很长一段距离并且经过合理的时间后
时间已过去。例如,在典型情况下,
每分钟发送的地理编码请求不应超过一个。

4)不要在用户不愿意的时候开始地理编码请求
立即查看结果。例如,如果
您的应用程序处于非 Activity 状态或在后台。

07-24 09:27