我遇到邮政编码问题。我使用CLGeocoder
和reverseGeocodeLocation:completionHandler:
方法。一切都很好,除了在地标我没有邮政编码。它是nil
。我仔细检查了位置对象并放置标记 - 一切正常并且正确。有人可以为我澄清这个问题吗?地理编码器是否仅针对某些国家(美国,英国等)返回邮政编码?这是代码:
CLGeocoder *geocoder = [[CLGeocoder alloc] init] ;
CLLocation *currentLocation = self.locationManager.location;
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) {
if (!error) {
CLPlacemark *placemark = [placemarks firstObject];
if (placemark.postalCode) {
NSLog(@"%@", placemark.postalCode);
} else {
NSLog(@"No postal code");
}
} else {
NSLog(@"Error occurred");
}
}];
答案 0 :(得分:4)
CLGeocoder不会仅为一个城市返回postalCode,因为有多个postalCode。
要获得postalCode,您需要更具体,例如写街道。
答案 1 :(得分:1)
您反转地理编码的currentLocation
具有一定的水平精度。如果该位置唯一地指定了一条街道,但该街道在水平精度范围内分配了2个邮政编码,则可能不会返回任何一条
所以,我建议检查currentLocation.horizontalAccuracy
属性。