#import <MapKit/MKMapView.h> @interface ViewController (){ CLLocationManager *_currentLoaction; CLGeocoder *_geocoder; CLPlacemark *_placeMark; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. _geocoder = [[CLGeocoder alloc] init]; _currentLoaction = [[CLLocationManager alloc] init]; _currentLoaction.delegate = self; [_currentLoaction startUpdatingLocation]; } #pragma mark - Location - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog(@"locError:%@", error); } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { CLLocationCoordinate2D locat = [newLocation coordinate]; double lattitude = locat.latitude; double longitude = locat.longitude; CLGeocodeCompletionHandler handler = ^(NSArray *placemark, NSError *error) { for (CLPlacemark *mark in placemark) { NSMutableDictionary *area_dic = [mark addressDictionary]; [area_dic setValue:[NSString stringWithFormat:@"%f", lattitude] forKeyPath:@"lattitude"]; [area_dic setValue:[NSString stringWithFormat:@"%f", longitude] forKeyPath:@"longitude"]; NSLog(@"area_dic is %@", area_dic); NSArray *array = [area_dic objectForKey:@"FormattedAddressLines"]; NSString *address = [area_dic objectForKey:@"FormattedAddressLines"]; NSLog(@"array is %@", array); address = [array objectAtIndex:0]; NSLog(@"address is %@", address); address = [area_dic objectForKey:@"City"]; NSLog(@"City is %@", address); } }; [_geocoder reverseGeocodeLocation:newLocation completionHandler:handler]; }