使用CLGeocoder进行正向地理编码的示例

4

除了苹果文档之外,需要一个工作示例或关于如何使用正向地理编码的指南。这相当通用(我无法理解)。

请提供这个将是很棒的!此外,有人知道他们是否使用Google API来实现相同的功能或者使用自己的API?


请尝试访问此链接:https://dev59.com/3HM_5IYBdhLWcg3w-4jw#2444249 - iNoob
1
已经有一个答案指向CLGeocoder,但没有展示任何东西。那里的解决方案都是iOS5之前的。现在我们有内置的地理编码解决方案。 - carbonr
1个回答

11

发现这个方法可行,如果其他人也觉得有用的话,我会在这里发布。

CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:PlaceName.text completionHandler:^(NSArray *placemarks, NSError *error) {
        //Error checking

        CLPlacemark *placemark = [placemarks objectAtIndex:0];
        MKCoordinateRegion region;
        region.center.latitude = placemark.region.center.latitude;
        region.center.longitude = placemark.region.center.longitude;
        MKCoordinateSpan span;
        double radius = placemark.region.radius / 1000; // convert to km

        NSLog(@"Radius is %f", radius);
        span.latitudeDelta = radius / 112.0;

        region.span = span;

        [mapView setRegion:region animated:YES];
    }];

1
根据地图工具箱数据类型参考,Apple指出:纬度一度始终大约相当于111公里(69英里)。虽然我还没有验证过这是否正确。 - redshift5
@AliakseiN。我没有注意到你的评论。112 不是魔法。如果你把 1 度转换成千米,就会得到这个值。 - carbonr
@carbonr 1°纬度 = 69.047英里 = 60海里 = 111.12公里 - Aleks N.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接