- (void)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; // } }];}- (CLGeocoder *)geocoder{ if (!_geocoder) { _geocoder = [[CLGeocoder alloc] init]; } return _geocoder;}
反地理编码
- (void)reverseGeocode{ // 1.获取用户输入的经纬度 NSString *longtitude = self.longtitudeField.text; NSString *latitude = self.latitudeField.text; if (longtitude.length == 0 || longtitude == nil || latitude.length == 0 || latitude == nil) { NSLog(@"请输入经纬度"); return; } // 2.根据用户输入的经纬度创建CLLocation对象 CLLocation *location = [[CLLocation alloc] initWithLatitude:[latitude doubleValue] longitude:[longtitude doubleValue]]; // 3.根据CLLocation对象获取对应的地标信息 [self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) { for (CLPlacemark *placemark in placemarks) { NSLog(@"%@ %@ %f %f", placemark.name, placemark.addressDictionary, placemark.location.coordinate.latitude, placemark.location.coordinate.longitude); self.reverseDetailAddressLabel.text = placemark.locality; } }];}