我正在尝试使用以下代码将地址解析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 状态或在后台。