前向地理编码

Posted

技术标签:

【中文标题】前向地理编码【英文标题】:Forward Geocoding 【发布时间】:2013-09-08 03:11:28 【问题描述】:

我正在创建一个简单的地图应用程序。到目前为止,我实现了我的地图视图以及我的搜索栏。我还使用了我在http://blog.sallarp.com/ipad-iphone-forward-geocoding-api-google/ 找到的器,它工作得很好。但似乎从 ios 5 开始,是一个内置功能。我究竟如何使用它?苹果文档很短,没有帮助。

我希望用户在文本字段或搜索栏中输入地址,然后在地图上显示带有注释的坐标。

【问题讨论】:

【参考方案1】:

转发地理编码(iOS 5):

#import <CoreLocation/CoreLocation.h>
CLGeocoder* gc = [[CLGeocoder alloc] init];
[gc geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) 

    if ([placemarks count]>0) 
    
        // get the first one
        CLPlacemark* mark = (CLPlacemark*)[placemarks objectAtIndex:0];
        double lat = mark.location.coordinate.latitude;
        double lng = mark.location.coordinate.longitude;            
    
];

反向地理编码(iOS 5):

#import <CoreLocation/CoreLocation.h>
CLGeocoder* gcrev = [[CLGeocoder alloc] init];
[gcrev reverseGeocodeLocation:c completionHandler:^(NSArray *placemarks, NSError *error) 

    CLPlacemark* revMark = [placemarks objectAtIndex:0];
    // turn placemark to address text
    NSArray* addressLines = [revMark.addressDictionary objectForKey:@"FormattedAddressLines"];
    NSString* revAddress = [addressLines componentsJoinedByString: @"\n"];
    // print
    NSLog(@"rev: %@",[NSString stringWithFormat:@"Reverse geocoded address: \n%@", revAddress]);        
];

CLPlacemark 有很多属性:

姓名 addressDictionary:地标的地址簿键和值。 ISO国家代码 国家 邮政编码 行政区 子行政区 地区 子区域 thoughfare:街道地址。 subThoroughfare:地标的地址簿键和值。 地区 内陆水域 海洋 感兴趣的领域

【讨论】:

【参考方案2】:

iOS 5 现在允许转发地理编码:

看看这里:

(https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/UsingGeocoders/UsingGeocoders.html#//apple_ref/doc/uid/TP40009497-CH4-SW5)

【讨论】:

以上是关于前向地理编码的主要内容,如果未能解决你的问题,请参考以下文章

前向地理编码

使用前向地理编码获取iOS中许多地址的纬度和经度时如何添加延迟?

在 iOS 中使用 CLGeocoder 进行转发地理编码,为某些位置的位置返回 null

iOS 地理编码 / 反地理编码

手把手教你Tableau自定义地理编码(十九)

iOS 原生地图地理编码与反地理编码