/ / iOSで逆Googleジオコーディングを使用する方法 - IOS、Objective-C、Googleマップ、Googleマップ、SDK-ios

iOSでリバースGoogleジオコーディングを使用する方法 - IOS、Objective-C、Googleマップ、Googleマップ、SDK-ios

私はiOS開発の初心者です。 私はMapViewから場所を取得するためにGoogle Map SDKを使用します。現在地を緯度と経度で取得しましたが、現在は郵便番号で現在の住所を取得したいのですが緯度と経度から、可能な限り解決方法を教えてください。

回答:

回答№1は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");
}
}];

回答№2の場合は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);
}];