(反)地理编码

(反)地理编码

1. 概念解释

  • 地理编码: 是指根据地址关键字, 将其转换成为对应的经纬度等信息;
  • 反地理编码: 是指根据经纬度信息, 将其转换成为对应的省市区街道等信息;

2. 测试环境

  • 必须联网
  • XCode版本不限
  • iOS模拟器系统版本不限

3. 地理编码

1. 导入CoreLocation框架以及对应的主头文件

        #import 

2. 创建CLGeocoder对象

        self.geoC = [[CLGeocoder alloc] init];

3. 根据地址关键字, 进行地理编码

        // 直接根据地址进行地理编码(返回结果可能有多个,因为一个地点有重名)
        [self.geoC geocodeAddressString:@"广州" completionHandler:^(NSArray * __nullable placemarks, NSError * __nullable error)
        {
            // 包含区,街道等信息的地标对象
            CLPlacemark *placemark = [placemarks firstObject];
            // 城市名称
            NSString *city = placemark.locality;
            // 街道名称
            NSString *street = placemark.thoroughfare;
            // 全称
            NSString *name = placemark.name;
        }];

4. 反地理编码

1. 导入CoreLocation框架以及对应的主头文件

        #import 

2. 创建CLGeocoder对象

        self.geoC = [[CLGeocoder alloc] init];

3. 根据经纬度信息, 进行反地理编码

        // 根据经纬度信息进行反地理编码
        [self.geoC reverseGeocodeLocation:[[CLLocation alloc] initWithLatitude:21.123 longitude:123.345] completionHandler:^(NSArray * __nullable placemarks, NSError * __nullable error)
        {
            // 包含区,街道等信息的地标对象
            CLPlacemark *placemark = [placemarks firstObject];
            // 城市名称
            NSString *city = placemark.locality;
            // 街道名称
            NSString *street = placemark.thoroughfare;
            // 全称
            NSString *name = placemark.name;
        }];

5. CLPlacemark(地标)

属性 类型 含义
location CLLocation 位置对象信息, 里面包含经纬度, 海拔等等
region CLRegion 地标对象对应的区域
addressDictionary NSDictionary 存放街道,省市等信息
name NSString 地址全称
thoroughfare NSString 街道名称
locality NSString 城市名称
administrativeArea NSString 省名称
country NSString 国家名称

6. 常见问题

  1. 测试无数据?
    • 首先, 检查是否有联网;
    • 其次, 如果是反地理编码,可尝试更换经纬度再次尝试, 有的经纬度没有对应信息

7. 应用场景

  • 一般与定位结合使用, 确定当前位置的具体地理信息

你可能感兴趣的:((反)地理编码)