如何使用google api从iOS中的当前位置获取邮政编码

时间:2016-03-25 13:41:07

标签: ios objective-c google-api google-places-api zipcode

我可以在自动填充搜索文本字段中找到实际位置。但我无法从此代码中找到邮政编码。请给我一个解决方案。

-(void)googleAPICallWithText:(NSString*)strData {


strData = [strData stringByReplacingOccurrencesOfString:@" " withString:@"+"];
NSLog(@"Value of allSelectedItems = %@", strData);


//google api url
NSString   *web_service_URL = [NSString stringWithFormat:@"%@json?input=%@&sensor=%@&key=%@",GOOGLE_GEOLOCATION_URL,strData,@"true",GOOGLE_API_KEY];

NSMutableString *reqData = [NSMutableString stringWithFormat:@""];
    id jsonDta= [reqData dataUsingEncoding:NSUTF8StringEncoding];

NSString   *jsonRepresantationFormat = [[NSString alloc]initWithData:jsonDta encoding:NSUTF8StringEncoding];
[self WebsewrviceAPICall:web_service_URL webserviceBodyInfo:jsonRepresantationFormat];
}

 -(void)WebsewrviceAPICall:(NSString *)serviceURL  webserviceBodyInfo:(NSString *)bodyString {
self.connectionTimer = [NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(cancelInsingAPICall) userInfo:nil repeats:NO];

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:serviceURL]];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody:[bodyString dataUsingEncoding:NSUTF8StringEncoding]];

self.connection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

if( self.connection ){
    self.receivedData = [NSMutableData data];

}
}

1 个答案:

答案 0 :(得分:0)

如果您的要求不限于使用Google的API,则可以使用CoreLocation。当您获得委托的回调中的位置时,您可以将位置对象反向地理编码为包含邮政编码的地标。

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    CLLocation *current = [locations objectAtIndex:0];

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder reverseGeocodeLocation:current completionHandler:^(NSArray *placemarks, NSError *error)
     {
         if (!error) {
             CLPlacemark *placemark = [placemarks objectAtIndex:0];
             NSString *zip = placemark.postalCode;

             // do stuff with zip code
         } else {
             // geocode failed
         }
     }];
}