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

Posted

技术标签:

【中文标题】iOS CoreLocation CLGeocoder 提供不完整的英国邮政编码【英文标题】:iOS CoreLocation CLGeocoder giving incomplete UK postcode 【发布时间】:2012-03-20 15:57:12 【问题描述】:

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];
];

值得注意的是,我在 Google Maps API 上尝试经纬度也得到了类似的结果,您可以在此处查看: http://maps.googleapis.com/maps/api/geocode/json?latlng=50.87138339,-1.30983213&sensor=true

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

迟到的回复 - 但就其价值而言,邮政编码仍然是没有最后 2 个字母的有效邮政编码 - 它只是覆盖了更广泛的区域。它看起来很奇怪,但仍然比去掉最后一个数字更准确。

【讨论】:

【参考方案3】:

刚刚在巴西遇到了同样的邮政编码问题。 这里我们的格式是 00000-000,而来自 CLPlacemark 的属性 postalCode 只返回前五位数字。

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

【讨论】:

以上是关于iOS CoreLocation CLGeocoder 提供不完整的英国邮政编码的主要内容,如果未能解决你的问题,请参考以下文章

CoreLocation - iOS 7 中的区域监控问题

IOS-CoreLocation

iOS CoreLocation 海拔高度

ios中CoreLocation中DesiredAcuracy和DistanceFilter的作用是啥

iOS 在 CoreLocation 崩溃

iOS iOS9.0 的CoreLocation定位