我能够在自动填充搜索文本字段中找到实际位置。但是我无法从这个代码中找到邮政编码。请给我一个解决方案。
-(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];
}
}
如果您的需求不限于使用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
}
}];
}