私は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);
}];