#pragma mark----地理编码
- (IBAction)geocode:(UIButton *)sender
{
[self.geocoder geocodeAddressString:self.addressField.text completionHandler:
^(NSArray *placemarks, NSError *error) {
if (error) {
self.detailAdress.text = @"你查找的地点在另一个星球";
}else{
// placemarks 这个数组中存放的是 CLPlacemark 对象(位置对象, 属性有: name, country, location)
NSDictionary *dic = [placemarks[0] addressDictionary];
NSLog(@"%@", dic[@"Country"]);
// 设置经纬度
CLPlacemark *placemark = placemarks[0];
self.latitude.text = [NSString stringWithFormat:@"%lf", placemark.location.coordinate.latitude];
self.longitude.text = [NSString stringWithFormat:@"%lf",placemark.location.coordinate.longitude];
// 地址详情
self.detailAdress.text = placemark.name;
}
}];
}
// 地理反编码
- (IBAction)reverseGeocode:(UIButton *)sender
{
// 创建一个 CLLocation 对象
// 获取输入的纬度和经度, 并转化为 double 类型
CLLocationDegrees latitude = [self.latitudeTextField.text doubleValue];
CLLocationDegrees longitude = [self.longitudeTextField.text doubleValue];
CLLocation *loc = [[CLLocation alloc]initWithLatitude:latitude longitude:longitude];
[self.geocoder reverseGeocodeLocation:loc completionHandler:^(NSArray *placemarks, NSError *error) {
if (error) {
self.reverseDetailAddress.text = @"未获取到指定位置";
}else
{
// 取出数组中第一个 placemark 对象
CLPlacemark * placemark = placemarks[0];
// 设置详细地址
self.reverseDetailAddress.text = placemark.name;
}
}];
}