2015-01-27 1 views
0

Я новичок в разработке iOS. я использую Google Map sdk для получения местоположения из MapView. Я получил текущее местоположение. Как широта и долгота, но теперь я хочу получить текущий адрес с почтовым индексом. От широты и долготы, как это возможно, пожалуйста, дайте мне решение для этого.Как использовать обратное Google GeoCoding в iOS?

ответ

0

Вы можете использовать CLGeocoder и reverseGeocodeLocation:completionHandler: метод:

- (void)getAddressFromLocation:(CLLocation *)location completionHandler:(void (^)(NSMutableDictionary *placemark))completionHandler failureHandler:(void (^)(NSError *error))failureHandler 
{ 
    NSMutableDictionary *d = [NSMutableDictionary new]; 
    CLGeocoder *geocoder = [CLGeocoder new]; 
    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) { 
     if (failureHandler && (error || placemarks.count == 0)) { 
      failureHandler(error); 
     } else { 
      CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
      if(completionHandler) { 
       completionHandler(placemark.addressDictionary); 
      } 
     } 
    }]; 
} 

И называют это так:

// Your location from latitude and longitude 
CLLocation *location = [[CLLocation alloc] initWithLatitude:aLatitude longitude:aLongitude]; 

// Call the method to find the address 
[self getAddressFromLocation:location completionHandler:^(NSMutableDictionary *d) { 
    NSLog(@"address informations : %@", d); 
    NSLog(@"formatted address : %@", [placemark.addressDictionary valueForKey:@"FormattedAddressLines"]); 
    NSLog(@"Street : %@", [d valueForKey:@"Street"]); 
    NSLog(@"ZIP code : %@", [d valueForKey:@"ZIP"]); 
    NSLog(@"City : %@", [d valueForKey:@"City"]); 
    // etc. 
} failureHandler:^(NSError *error) { 
    NSLog(@"Error : %@", error); 
}]; 
+0

Я хочу Fetch Некоторый data From This addressDictionary как CityName, Address, Street adesss, Zipcode и т. д. как его получить? – Ramesh

+0

Объект MKPlacemark имеет 'addressDictionary', который вы можете получить через' valueForKey': NSArray * shortDescArray = [placemark.addressDictionary valueForKey: @ "FormattedAddressLines"]; –

0

Вы можете использовать CLGeocoder:

__block CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 

    [geocoder reverseGeocodeLocation:theLocation completionHandler:^(NSArray *placemarks, NSError *error) { 
     if (error){ 
      DDLogVerbose(@"Geocode failed with error: %@", error); 

      if([self.delegate respondsToSelector:@selector(geocodeFailed:)]) { 
       [self.delegate geocodeFailed:error]; 
      } 

      return; 
     } 

     MKPlacemark *placemark = [placemarks lastObject]; 

     if(placemark) { 

      NSArray *shortDescArray = [placemark.addressDictionary valueForKey:@"FormattedAddressLines"]; 
      NSString *shortDesc = [shortDescArray componentsJoinedByString:@", "]; 

      DDLogVerbose(@"myPlacemark %@", placemark.addressDictionary); 
     } else { 
      DDLogVerbose(@"Geocode failed"); 
     } 
    }]; 
Смежные вопросы