如何将多个地名转换为坐标?

Posted

技术标签:

【中文标题】如何将多个地名转换为坐标?【英文标题】:How to convert more than one place names into coordinates? 【发布时间】:2012-05-18 13:45:26 【问题描述】:

我正在尝试使用以下代码将 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);
                 
             ];

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

我想知道为什么会发生这种情况以及如何转换多个位置。

【问题讨论】:

【参考方案1】:

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

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

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

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

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

4) 不要在用户不愿意的时候启动地理编码请求 立即查看结果。例如,如果出现以下情况,请不要启动请求 您的应用程序处于非活动状态或在后台。

【讨论】:

【参考方案2】:

您一次不应执行多个地理编码操作。该块是异步发生的,因此第二个地理编码操作可能会在第一个有机会完成之前开始。这是文档:

该方法将指定的位置数据异步提交给地理编码服务器并返回。您的完成处理程序块将在主线程上执行。发起正向地理编码请求后,请勿尝试发起另一个正向或反向地理编码请求。

【讨论】:

以上是关于如何将多个地名转换为坐标?的主要内容,如果未能解决你的问题,请参考以下文章

将纬度和经度值转换为地名并显示?

将经纬度转换为地名

如何将 kml 多边形几何数据转换为谷歌多边形坐标

如何将WGS84坐标转换成经纬度坐标

C++——如何将一个字符串转换为多个整数?

请问,如何将经纬度转换为XY坐标.