iOS CoreLocation CLGeocoder提供不完整的英国邮政编码

时间:2012-03-20 15:57:13

标签: iphone ios ios5 geocoding core-location

我有CoreLocation找到我,然后我正在尝试运行reverseGeocodeLocation以找出邮政编码。但是,我收到的邮政编码不完整(SO31 4)。通常你会想到4之后的另外两个字符。这是我正在使用的代码:

- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
       fromLocation:(CLLocation *)oldLocation {
    [self.geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
    CLPlacemark *placemark = [placemarks objectAtIndex:0];

    self.postcode.text = placemark.postalCode;
    if (self.postcode.text.length > 0)
        [self.locationManager stopUpdatingLocation];
}];
}

值得注意的是,我在谷歌地图API上尝试lat / long也得到了类似的结果,你可以在这里看到: http://maps.googleapis.com/maps/api/geocode/json?latlng=50.87138339,-1.30983213&sensor=true

理想情况下,我想要一个完整的邮政编码。想到的唯一选择只是使用前四个字符,但我想我先问这里只是因为有人有更好的想法。

3 个答案:

答案 0 :(得分:1)

他们没有完整的英国邮政编码数据库,因此您只能使用Google API获得此解决方案。

您需要使用完整的邮政编码数据库,而http://www.postcodeanywhere.co.uk/等公司会将其出售。

答案 1 :(得分:0)

延迟回复 - 但是对于它的价值,邮政编码仍然是一个没有最后2个字母的有效邮政编码 - 它只是覆盖了更广泛的区域。它看起来很奇怪,但它比你放弃最后一个数字更准确。

答案 2 :(得分:0)

巴西的邮政编码遇到了同样的问题。 这里我们的格式为00000-000,postalCode的属性CLPlacemark仅返回前五位数。

可以从addressDictionary获取访问CLPlacemark属性的完整邮政编码。在这个NSDictionary中,我们可以从密钥的值中获取所需的信息:ZIPPostCodeExtension