【问题标题】: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);
                 }
             }];

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

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

【问题讨论】:

    标签: ios ios5 geocoding core-location


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-04-08
        • 2021-03-17
        • 2020-08-24
        • 1970-01-01
        • 2019-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多