iOS.定位服务与地图应用.03.地理信息编码查询
#import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> #import <AddressBook/AddressBook.h> #import <AddressBookUI/AddressBookUI.h> @interface T20140621221104ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtQueryKey; @property (weak, nonatomic) IBOutlet UITextView *txtView; - (IBAction)geocodeQuery:(id)sender; @end
#import "T20140621221104ViewController.h" @interface T20140621221104ViewController () @end @implementation T20140621221104ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. }- (IBAction)geocodeQuery:(id)sender { if (_txtQueryKey.text == nil || [_txtQueryKey.text length] == 0) { return; } CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder geocodeAddressString:_txtQueryKey.text completionHandler:^(NSArray *placemarks, NSError *error) { NSLog(@"查询记录数:%i",[placemarks count]); if ([placemarks count] > 0) { CLPlacemark* placemark = placemarks[0]; CLLocationCoordinate2D coordinate = placemark.location.coordinate; NSString* strCoordinate = [NSString stringWithFormat:@"经度:%3.5f \n纬度:%3.5f",coordinate.latitude, coordinate.longitude]; NSDictionary *addressDictionary = placemark.addressDictionary; NSString *address = [addressDictionary objectForKey:(NSString *)kABPersonAddressStreetKey]; address = address == nil ? @"": address; NSString *state = [addressDictionary objectForKey:(NSString *)kABPersonAddressStateKey]; state = state == nil ? @"": state; NSString *city = [addressDictionary objectForKey:(NSString *)kABPersonAddressCityKey]; city = city == nil ? @"": city; _txtView.text = [NSString stringWithFormat:@"%@ \n %@ \n%@ \n%@",strCoordinate,state, address,city]; //关闭键盘 [_txtQueryKey resignFirstResponder]; } }]; } @end