//聯系人:石虎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];
}}];}}
謝謝!!!