ios: ¿Cuál es la forma eficiente y recomendada de invertir el geocódigo?

Debo revertir el código geográfico Latitud y Longitud de alguna location y quiero get la dirección de esa location. Lo he hecho a través del service web de Google, pero lleva time. Quiero saber si hay algún otro enfoque bueno y eficiente.

Actualmente llamando a este service,

NSString * getAddress = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?latlng=%@,%@&sensor=true",Lattitude,Longitude]; 

Puedes usar CLGeocoder :

 [self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error){ CLPlacemark *placemark = placemarks[0]; NSLog(@"Found %@", placemark.name); }]; 

Sin embargo, esto tomará time, ya que ambos methods usan web services para convertir lat / long en un lugar

Prueba este código.

 geoCoder = [[CLGeocoder alloc]init]; [self.geoCoder reverseGeocodeLocation: locationManager.location completionHandler: //Getting Human readable Address from Lat long,,, ^(NSArray *placemarks, NSError *error) { //Get nearby address CLPlacemark *placemark = [placemarks objectAtIndex:0]; //String to hold address NSString *locatedAt = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "]; //Print the location to console NSLog(@"I am currently at %@",locatedAt); }]; 

Echa un vistazo a GLGeocoder . Específicamente reverseGeocodeLocation:completionHandler:

Puede usar CLGeocoder de Apple (parte de CoreLocation). Específicamente, el – reverseGeocodeLocation:completionHandler: que devolverá un dictionary de datos de dirección para las coorderadas dadas.

Eche un vistazo a este tutorial o, si simplemente desea que algo se copie rápidamente: NSArray * addressOutput; CLLocation * currentLocation; // asume estas variables de instancia

 // Reverse Geocoding CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) { NSLog(@"Found placemarks: %@, error: %@", placemarks, error); if (error == nil && [placemarks count] > 0) { NSMutableArray *tempArray = [[NSMutableArray alloc] initWithCapacity:[placemarks count]]; for (CLPlacemark *placemark in placemarks) { [tempArray addObject:[NSString stringWithFormat:@"%@ %@\n%@ %@\n%@\n%@", placemark.subThoroughfare, placemark.thoroughfare, placemark.postalCode, placemark.locality, placemark.administrativeArea, placemark.country]]; } addressOutput = [tempArray copy]; } else { addressOutput = nil; NSLog(@"%@", error.debugDescription); } }]; 

Basado en el código en el tutorial.