//联系人:石虎QQ: 1224614774昵称:嗡嘛呢叭咪哄
- (void)viewDidLoad{
[superviewDidLoad];
//创建地址解析器
self.geocoder = [[CLGeocoder alloc] init];
}
//编码
- (IBAction)encodeTapped:(id)sender{
//获取用户输入的地址字符串
NSString* addr =self.addrField.text;
if(addr !=nil&& addr.length >0)
{
[self.geocoder geocodeAddressString:addrcompletionHandler: ^(NSArray *placemarks, NSError *error) {
//如果解析结果的集合元素的个数大于1,表明解析得到了经度、纬度信息
if(placemarks.count >0){
//只处理第一个解析结果,实际项目中可使用列表让用户选择
CLPlacemark* placemark = placemarks[0];
CLLocation* location = placemark.location;
self.resultView.text = [NSString stringWithFormat:@"%@的经度为:%g,纬度为:%g", addr ,location.coordinate.longitude ,location.coordinate.latitude ];
}else{//没有得到解析结果。
//使用UIAlertView提醒用户
[[[UIAlertView alloc] initWithTitle:@"提醒"message:@"您输入的地址无法解析"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil]show];
}
}];
}
}
//反编译
- (IBAction)reverseTapped:(id)sender{
NSString *longitudeStr =self.longitudeField.text;
NSString *latitudeStr =self.latitudeField.text;
if(longitudeStr !=nil&& longitudeStr.length >0&& latitudeStr !=nil&& latitudeStr.length >0){
//将用户输入的经度、纬度封装成CLLocation对象
CLLocation* location = [[CLLocation alloc]initWithLatitude:[latitudeStr floatValue]longitude:[longitudeStr floatValue]];
[self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error){
//如果解析结果的集合元素的个数大于1,表明解析得到了经度、纬度信息
if(placemarks.count >0){
//只处理第一个解析结果,实际项目可使用列表让用户选择
CLPlacemark* placemark = placemarks[0];
//获取详细地址信息
NSArray* addrArray = [placemark.addressDictionaryobjectForKey:@"FormattedAddressLines"];
//将详细地址拼接成一个字符串
NSMutableString* addr = [[NSMutableString alloc] init];
for(inti =0; i < addrArray.count ; i ++){
[addr appendString:addrArray[i]];
}
self.resultView.text = [NSString stringWithFormat:@"经度:%g,纬度:%g的地址为:%@",location.coordinate.longitude ,location.coordinate.latitude , addr];
}else{//没有得到解析结果。
//使用UIAlertView提醒用户
[[[UIAlertView alloc] initWithTitle:@"提醒"message:@"您输入的地址无法解析"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil]show];
}}];}}
谢谢!!!