iOS CoreLocation CLGeocoder дает неполный почтовый индекс в Великобритании

Я нашел 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];
}];
}

Примечательно, что я также получаю аналогичные результаты, пытаясь использовать lat / long в Google Maps API, вы можете увидеть здесь: http://maps.googleapis.com/maps/api/geocode/json?latlng=50.87138339,-1.30983213&sensor=true

В идеале я хочу полный почтовый индекс. Единственная альтернатива, которая приходит на ум, - это использовать только первые четыре символа, но я подумал, что сначала спрошу здесь, только если у кого-то есть идея получше.

3 ответа

Решение

У них нет полной базы данных почтовых индексов в Великобритании, поэтому вы сможете получить это разрешение только с помощью API Google.

Вам необходимо использовать полную базу данных почтовых индексов, и компании, такие как http://www.postcodeanywhere.co.uk/ продают их.

Просто была такая же проблема с почтовым индексом в Бразилии. Здесь у нас есть формат 00000-000 и свойство postalCode от CLPlacemark возвращал только первые пять цифр.

Можно получить полный номер почтового индекса, получая доступ к addressDictionary собственность от CLPlacemark, В этом NSDictionary мы можем получить необходимую нам информацию в значениях из ключей: ZIP а также PostCodeExtension,

Поздний ответ - но, несмотря на это, почтовый индекс все еще является действительным почтовым индексом без последних 2 букв - он просто охватывает более широкую область. Это выглядит странно, но все же точнее, чем если вы уроните последний номер.

Другие вопросы по тегам