地理编码

//pragma mark - 地理编码
// 监听地理编码点击事件
- (IBAction)geocodeBtnClick;
// 需要编码的地址容器
@property (weak, nonatomic) IBOutlet UITextField *addressField;
// 经度容器
@property (weak, nonatomic) IBOutlet UILabel *longitudeLabel;
// 纬度容器
@property (weak, nonatomic) IBOutlet UILabel *latitudeLabel;
// 详情容器
@property (weak, nonatomic) IBOutlet UILabel *detailAddressLabel;
//地理编码对象
@property (nonatomic ,strong) CLGeocoder *geocoder;

  • (IBAction)geocodeBtnClick{
    // 0.获取用户输入的位置
    NSString *addressStr = self.addressField.text;
    if (addressStr == nil || addressStr.length == 0) {
    NSLog(@”请输入地址”);
    return;}
    // 1.创建地理编码对象
    // 2.利用地理编码对象编码
    // 根据传入的地址获取该地址对应的经纬度信息
    [self.geocoder geocodeAddressString:addressStr completionHandler:^(NSArray *placemarks, NSError *error{
    if (placemarks.count == 0 || error != nil) {
    return ;
    }
    // placemarks地标数组, 地标数组中存放着地标, 每一个地标包含了该位置的经纬度以及城市/区域/国家代码/邮编等等…
    // 获取数组中的第一个地标
    CLPlacemark *placemark = [placemarks firstObject];
    // for (CLPlacemark *placemark in placemarks) {
    // NSLog(@”%@ %@ %f %f”, placemark.name, placemark.addressDictionary, placemark.location.coordinate.latitude, placemark.location.coordinate.longitude);
    self.latitudeLabel.text = [NSString stringWithFormat:@”%f”, placemark.location.coordinate.latitude];
    self.longitudeLabel.text = [NSString stringWithFormat:@”%f”, placemark.location.coordinate.longitude];
    NSArray *address = placemark.addressDictionary[@”FormattedAddressLines”];
    NSMutableString *strM = [NSMutableString string];
    for (NSString *str in address) {
    [strM appendString:str];
    }
    self.detailAddressLabel.text = strM;
    // }
    }];
    }

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