地理编码与地理反编码

// 地理编码
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {
        // 1.如果解析有错误,或者解析出的数组个数为0.直接返回
        if (placemarks.count == 0 || error) return;
        
        // 2.遍历所有的地标对象(如果是实际开发,可以给用户以列表的形式展示)
        for (CLPlacemark *pm in placemarks) {
            // 2.1.取出用户的位置信息
            CLLocation *location = pm.location;
            // 2.2.取出用户的经纬度
            CLLocationCoordinate2D coordinate = location.coordinate;
            
            // 2.3.将信息设置到界面上
            self.latitudeLabel.text = [NSString stringWithFormat:@"%.2f", coordinate.latitude];
            self.longitudeLabel.text = [NSString stringWithFormat:@"%.2f",coordinate.longitude];
            self.resultLabel.text = pm.name;
        }

    }];


// 反地理编码
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude.floatValue longitude:longitude.floatValue];
    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
        // 如果有错误,或者解析出来的地址数量为0
        if (placemarks.count == 0 || error) return ;
        
        // 取出地标,就可以取出地址信息,以及CLLocation对象
        CLPlacemark *pm = [placemarks firstObject];
        
#warning 注意:如果是取出城市的话,需要判断locality属性是否有值(直辖市时,该属性为空)
        if (pm.locality) {
            self.resultLabel.text = pm.locality;
        } else {
            self.resultLabel.text = pm.administrativeArea;
        }
    }];


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