If you’re using CLLocationManager to obtain the user’s location, you can add some code in the delegate method to reverse geocode the user’s location…
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { if (curLocation.horizontalAccuracy < 200) // w/in 200 meters { [locMgr stopUpdatingLocation]; NSLog(@"Location: %f %f", curLocation.coordinate.latitude, curLocation.coordinate.longitude); // find a placemark using the found coordinates CLGeocoder *geoCoder = [[CLGeocoder alloc] init]; [geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) { if (error) NSLog(@"Error: %@", error); else if (placemarks.count > 0) curPlacemark = [placemarks firstObject]; }]; } }
Alloc-init a CLGeocoder and call reverseGeocodeLocation: w/ the location passed in (or any location) and a completion handler.
I’m storing it in a instance variable to use later. Here’s some code to print out the details…
NSString *addressTxt = [NSString stringWithFormat:@"%@ %@,%@ %@", [topResult subThoroughfare],[topResult thoroughfare], [topResult locality], [topResult administrativeArea]]; NSLog(@"result: %@",addressTxt); NSLog(@"coordinate: %f %f", curPlacemark.location.coordinate.latitude, curPlacemark.location.coordinate.longitude);
It’s fairly simple. I’ll look at forward geocoding soon.
Pingback: Forward Geocode in iOS with CLGeocoder | Brainwash Inc.
Comments are closed.