2012-03-20 111 views
1

我有CoreLocation找到我,然后我试图运行reverseGeocodeLocation来找出邮政编码。但是,我收到了不完整的邮政编码(SO31 4)。通常情况下你所期望的另外两个字符后4.下面是我使用的代码:iOS CoreLocation CLGeocoder提供不完整的英国邮政编码

- (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,你可以在这里看到: http://maps.googleapis.com/maps/api/geocode/json?latlng=50.87138339,-1.30983213&sensor=true

理想情况下,我想要一个完整的邮政编码。想到的唯一选择只是使用前四个字符,但我想我会先问这里,然后告诉别人有更好的主意。

回答

1

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

您需要使用完整的邮编数据库和像http://www.postcodeanywhere.co.uk/这样的公司出售它们。

0

最新回复 - 但值得一提的是,邮编仍然是一个有效的邮政编码,没有最后2个字母 - 它只是覆盖更广的区域。它看起来很奇怪,但比放弃最后一个号码更准确。

0

刚刚在巴西有一个邮编相同的问题。 在这里,我们有格式00000-000和从CLPlacemark的属性postalCode只返回前五位数字。

可以从CLPlacemark获取完整的邮政编码号码访问addressDictionary属性。在这个NSDictionary中,我们可以通过键值得到我们需要的信息:ZIPPostCodeExtension