地理编码不会返回邮政编码

时间:2014-11-25 13:12:54

标签: ios objective-c core-location

我遇到邮政编码问题。我使用CLGeocoderreverseGeocodeLocation: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");
        }
    }];

2 个答案:

答案 0 :(得分:4)

CLGeocoder不会仅为一个城市返回postalCode,因为有多个postalCode。

要获得postalCode,您需要更具体,例如写街道。

答案 1 :(得分:1)

您反转地理编码的currentLocation具有一定的水平精度。如果该位置唯一地指定了一条街道,但该街道在水平精度范围内分配了2个邮政编码,则可能不会返回任何一条 所以,我建议检查currentLocation.horizontalAccuracy属性。