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 букв - он просто охватывает более широкую область. Это выглядит странно, но все же точнее, чем если вы уроните последний номер.