iOS 地理和反地理编码

Posted blueleaf-tech

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 地理和反地理编码相关的知识,希望对你有一定的参考价值。

  • 导入CoreLocation框架和对应的主头文件
#import <CoreLocation/CoreLocation.h>
  • 创建CLGeocoder对象
_geoC = [[CLGeocoder alloc] init];
  • 地理编码
  1. 根据地址进行地理编码
            [self.geoC geocodeAddressString:@"科技八路" completionHandler:^(NSArray<CLPlacemark *> * __nullable placemarks, NSError * __nullable error) {
                //返回结果可能有多个,因为一个地点有重名
                // 包含区,街道等信息的地标对象
                CLPlacemark *placemark = [placemarks firstObject];
                // 城市名称
        //        NSString *city = placemark.locality;
                // 街道名称
        //        NSString *street = placemark.thoroughfare;
                // 全称
                NSString *name = placemark.name;
                self.addressDetailTV.text = [NSString stringWithFormat:@"%@", name];
                self.latitudeTF.text = [NSString stringWithFormat:@"%f", placemark.location.coordinate.latitude];
                self.longtitudeTF.text = [NSString stringWithFormat:@"%f", placemark.location.coordinate.longitude];
            }];
    

 

2. 根据地址和指定区域两个条件进行地理编码(更加精确)

//补充Region定义
[self.geoC geocodeAddressString:@"美寓华庭" inRegion:nil completionHandler:^(NSArray<CLPlacemark *> * __nullable placemarks, NSError * __nullable error) { // 包含区,街道等信息的地标对象 CLPlacemark *placemark = [placemarks firstObject]; self.addressDetailTV.text = placemark.description; self.latitudeTF.text = [NSString stringWithFormat:@"%f", placemark.location.coordinate.latitude]; self.longtitudeTF.text = [NSString stringWithFormat:@"%f", placemark.location.coordinate.longitude]; }];
  • 反地理编码
// 创建CLLocation对象
CLLocation *location = [[CLLocation alloc] initWithLatitude:34.267 longitude:108.9;
// 根据CLLocation对象进行反地理编码
[self.geoC reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * __nullable placemarks, NSError * __nullable error) {
    // 包含区,街道等信息的地标对象
    CLPlacemark *placemark = [placemarks firstObject];
    // 城市名称
    // NSString *city = placemark.locality;
    // 街道名称
    // NSString *street = placemark.thoroughfare;
    // 全称
    NSString *name = placemark.name;
    self.addressDetailTV.text = [NSString stringWithFormat:@"%@", name];
}];

 


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

iOS 地理编码 / 反地理编码

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

iOS 转发地理编码块未执行

iOS5 反向地理编码限制

iOS定位的使用:地理/逆地理编码/判断目标经纬度是否在大陆

iOS 6 中的本地化地理编码选项