title: Get location name from Latitude & Longitude in iOS
body: <p>I want to find current location name from latitude and longitude,</p>
  
  <p>Here is my code snippet I tried but my log shows null value in all the places except in <code>placemark</code>, <code>placemark.ISOcountryCode</code> and <code>placemark.country</code></p>
  
  <p>I want value of <code>placemark.locality</code> and <code>placemark.subLocality</code> but it is showing null values.</p>
  
  <pre><code>- (void)viewWillAppear:(BOOL)animated
  {
       [super viewWillAppear:animated];
  
      // this creates the CCLocationManager that will find your current location
      locationManager = [[CLLocationManager alloc] init];
      locationManager.delegate = self;
      locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
      [locationManager startUpdatingLocation];
  
  }
  
  // this delegate is called when the app successfully finds your current location
  - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
  {
      CLGeocoder *geocoder = [[CLGeocoder alloc] init];
      [geocoder reverseGeocodeLocation:locationManager.location
                     completionHandler:^(NSArray *placemarks, NSError *error) {
                         NSLog(@"reverseGeocodeLocation:completionHandler: Completion Handler called!");
  
                         if (error){
                             NSLog(@"Geocode failed with error: %@", error);
                             return;
  
                         }
  
                         NSLog(@"placemarks=%@",[placemarks objectAtIndex:0]);
                         CLPlacemark *placemark = [placemarks objectAtIndex:0];
  
                         NSLog(@"placemark.ISOcountryCode =%@",placemark.ISOcountryCode);
                         NSLog(@"placemark.country =%@",placemark.country);
                         NSLog(@"placemark.postalCode =%@",placemark.postalCode);
                         NSLog(@"placemark.administrativeArea =%@",placemark.administrativeArea);
                         NSLog(@"placemark.locality =%@",placemark.locality);
                         NSLog(@"placemark.subLocality =%@",placemark.subLocality);
                         NSLog(@"placemark.subThoroughfare =%@",placemark.subThoroughfare);
  
                     }];
  }
  
  // this delegate method is called if an error occurs in locating your current location
  - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
  {
      NSLog(@"locationManager:%@ didFailWithError:%@", manager, error);
  }
  </code></pre>
  
  <p><strong>Thanks In Advance.</strong></p>
  
  <p><strong><em>EDIT:</em></strong></p>
  
  <pre><code>- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
  {
      CLGeocoder *geocoder = [[CLGeocoder alloc] init];
  
      CLLocation *currentLocation = newLocation;
  
      if (currentLocation != nil)
          NSLog(@"longitude = %.8f\nlatitude = %.8f", currentLocation.coordinate.longitude,currentLocation.coordinate.latitude);
  
      // stop updating location in order to save battery power
      [locationManager stopUpdatingLocation];
  
  
      [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error)
       {
           NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
           if (error == nil &amp;&amp; [placemarks count] &gt; 0)
           {
               CLPlacemark *placemark = [placemarks lastObject];
  
               // strAdd -&gt; take bydefault value nil
               NSString *strAdd = nil;
  
               if ([placemark.subThoroughfare length] != 0)
                   strAdd = placemark.subThoroughfare;
  
               if ([placemark.thoroughfare length] != 0)
               {
                   // strAdd -&gt; store value of current location
                   if ([strAdd length] != 0)
                       strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark thoroughfare]];
                   else
                   {
                       // strAdd -&gt; store only this value,which is not null
                       strAdd = placemark.thoroughfare;
                   }
               }
  
               if ([placemark.postalCode length] != 0)
               {
                   if ([strAdd length] != 0)
                       strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark postalCode]];
                   else
                       strAdd = placemark.postalCode;
               }
  
               if ([placemark.locality length] != 0)
               {
                   if ([strAdd length] != 0)
                       strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark locality]];
                   else
                       strAdd = placemark.locality;
               }
  
               if ([placemark.administrativeArea length] != 0)
               {
                   if ([strAdd length] != 0)
                       strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark administrativeArea]];
                   else
                       strAdd = placemark.administrativeArea;
               }
  
               if ([placemark.country length] != 0)
               {
                   if ([strAdd length] != 0)
                       strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark country]];
                   else
                       strAdd = placemark.country;
               }
           }
       }];
  }
  </code></pre>