1. 根据经纬度获取地名
- CLGeocoder *clGeoCoder = [[CLGeocoder alloc] init];
- [clGeoCoder reverseGeocodeLocation:newLocation completionHandler: ^(NSArray *placemarks,NSError *error) {
- for (CLPlacemark *placeMark in placemarks)
- {
- NSDictionary *addressDic=placeMark.addressDictionary;
- NSString *state=[addressDic objectForKey:@"State"];
- NSString *city=[addressDic objectForKey:@"City"];
- NSString *subLocality=[addressDic objectForKey:@"SubLocality"];
- NSString *street=[addressDic objectForKey:@"Street"];
- [self stopLocation];
- [_chooseCityBtn setTitle:city forState:UIControlStateNormal];
- [_activityIndicator stopAnimating];
- }
- }];
2. 根据地名获取经纬度
- NSString *oreillyAddress = @"1005 Gravenstein Highway North, Sebastopol, CA 95472, USA";
- CLGeocoder *myGeocoder = [[CLGeocoder alloc] init];
- [myGeocoder geocodeAddressString:oreillyAddress completionHandler:^(NSArray *placemarks, NSError *error) {
- if ([placemarks count] > 0 && error == nil) {
- NSLog(@"Found %lu placemark(s).", (unsigned long)[placemarks count]);
- CLPlacemark *firstPlacemark = [placemarks objectAtIndex:0];
- NSLog(@"Longitude = %f", firstPlacemark.location.coordinate.longitude);
- NSLog(@"Latitude = %f", firstPlacemark.location.coordinate.latitude);
- }
- else if ([placemarks count] == 0 && error == nil) {
- NSLog(@"Found no placemarks.");
- } else if (error != nil) {
- NSLog(@"An error occurred = %@", error);
- }
- }];