4

Currently, we could use reverseGeocodeCoordinate from GeoCoder to reverse the lat long to an address.

https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_geocoder

However, it seems has no way to reverse it to the Google places.

Is it possible to get the places from iOS SDK?

Thanks Alex

Alex Chan
  • 297
  • 4
  • 14

1 Answers1

-1

Yes, you can use CLGeocoder of iOS SDK. Check the code,

+ (void)fetchAddressFromCoordinates:(CoordinatesDataModel *)coordinates returnValue:(void(^)(NSString* address))returnBlock { 

CLLocation *currentLocation = [[CLLocation alloc] initWithLatitude:(CLLocationDegrees)[coordinateDataModel.latitude doubleValue]  longitude:(CLLocationDegrees)[coordinateDataModel.longitude doubleValue]];    
if (currentLocation != nil)  
// Reverse Geocoding
// “reverseGeocodeLocation” method to translate the locate data into a human-readable address.    
// The reason for using "completionHandler" ----
//  Instead of using delegate to provide feedback, the CLGeocoder uses “block” to deal with the response. By using block, you do not need to write a separate method. Just provide the code inline to execute after the geocoding call completes.
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error)
 {
     if (error == nil && [placemarks count] > 0)
     {
         if(placemarks && placemarks.count > 0)
         {
             CLPlacemark *placemark= [placemarks objectAtIndex:0];
             // address defined in .h file
             NSString *address = [NSString stringWithFormat:@"%@ %@ %@ %@ %@",[placemark subThoroughfare], [placemark thoroughfare], [placemark locality], [placemark administrativeArea], [placemark country]];

             NSCharacterSet *whitespace = [NSCharacterSet whitespaceCharacterSet];
             address = [address stringByTrimmingCharactersInSet:whitespace];

             NSMutableArray *words = [[address componentsSeparatedByCharactersInSet:whitespace] mutableCopy];
             //            NSLog(@":%@",words);
             NSMutableArray * wordsArray = [[NSMutableArray alloc] init];
             for (int i= 0; i< [words count]; i++) {
                 if (![[words objectAtIndex:i] isEqualToString:@"(null)"] ) {
                     [wordsArray addObject:[words objectAtIndex:i]];
                 }
             }
             address = [wordsArray componentsJoinedByString:@" "];
             returnBlock(address);
         }
     }
 }];}
Paddy
  • 766
  • 5
  • 16
  • Thanks, But is it possible to use Google Places? – Alex Chan Jun 02 '15 at 09:51
  • Check out [this](http://stackoverflow.com/questions/24503375/get-latitude-and-longitude-based-on-address-using-geocoder-class-in-ios). – Paddy Jun 02 '15 at 10:03
  • Thanks, checked. so you mean that I need to get the address first and the call another request to get the Google places data? – Alex Chan Jun 03 '15 at 01:53