Получение полного адреса с почтовым индексом

У меня есть форма, в которой пользователи должны ввести следующие данные местоположение:

  1. полная адресная строка (адрес улицы, квартира, люкс, блок, здание, этаж)
  2. дома№
  3. города
  4. штат / провинция / область
  5. ZIP / почтовый индекс
  6. страны

чтобы упростить заполнение этой формы, я хотел бы автоматически заполнить полный адрес (строка addrses, город, штат провинция и т. д.), позволяя пользователю ввести только свою страну, почтовый индекс и номер дома.

правильно ли, что этих 3 элементов достаточно для поиска адреса в Соединенных Штатах? Или требуется меньше или больше информации? И является ли ответ на этот вопрос различным для каждой страны? Кроме того, есть ли сервис, API или библиотека, которые могут быть использованы для этой цели (например, Google Maps или OpenStreetMap)?

4 ответов


большие вопросы!

- Это верно, что этих 3 пунктов достаточно, чтобы найти адрес в США?

нет. К сожалению, эти три приведут вас к ~сотням возможных адресов в США.

- ответ на этот вопрос разные для каждой страны?

да! Почтовые системы из страны в страну сильно различаются, и Вы пользователи в них будут иметь разные ожидания о том, что они ожидают поставлять - британцы не ожидают, что придется вводить полный адрес, например.

с Великобританией, Канадой и Австралией вы обычно можете получить один адрес от номера дома и почтового индекса. Но, вы не можете гарантировать это. Может быть дополнительная информация или бизнес-информация, которая требует немного взаимодействия с пользователем, чтобы проверить, что у вас есть правильный адрес.

некоторые страны, такие как Франция, не имеют полного охвата номера помещения. С их помощью вы можете взять номер помещения и почтовый индекс, но в зависимости от города вы должны изменить свое поведение либо доверять и принимать ввод или запрашивать их для исправления.

еще одним важным соображением при планировании рабочего процесса является необходимость учитывать людей, которые, возможно, не знают свой почтовый индекс / zip. Это происходит не часто, но иногда люди просто переехали, или иногда свойства почтовый индекс / zip изменения, поэтому важно быть гибким в вам нужна информация.

есть ли служба, API или библиотека, которые могут быть использованы для этой цели?

Да-существует несколько решений, которые предлагают возможность захвата глобальных адресов. Experian Data Quality (моя компания) предлагает hosted или на помещение решение, которое позволяет это сделать.

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


Я могу ответить только об адресах США (я работаю в SmartyStreets), но ответ Нет, это не сработает.

престижность для ваших желаний, чтобы улучшить пользовательский опыт. К сожалению, я бы не рекомендовал пробовать это, и вот почему:

почтовый индекс США, в целом, на самом деле 11 цифр (12 с контрольной цифрой):

  • первые три цифры являются SCF (секционный центр объекта), своего рода, как код региона
  • первый пять цифр-это ваш типичный 5-значный почтовый индекс, который указывает набор маршрутов перевозчика
  • следующие 4 цифры более точны, часто сужая адрес до уровня блока.
  • следующие 2 цифры редко используются, за исключением штрих-кодов, но они указывают точку доставки. Теоретически это указывает на конкретный дом, квартиру или почтовый ящик, но на самом деле иногда 11-значный код неоднозначен (распространен в больших комплексах, уличных кварталах или объектах PO). Это типично на момент поставки соотносится с номером дома или квартиры, но не всегда.

Так в вашей ситуации:

  • знание страны сужает возможности только до 350 000 000 + адресов
  • зная 5-значный почтовый индекс сужает его до где-то около 10 000+ адресов (важное замечание: не все знают 5-значный почтовый индекс, и они меняются. Более того, они могут не быть уверены, стоит ли вводить их Почтовый индекс PO box или их домашний почтовый индекс. А что если их дом не получает почту? Или что, если они в армии, и их 5-значный ZIP находится в движении?)
  • зная номер дома может сузить адрес кандидатов в любом месте от 1-1000. Это зависит от того, насколько "большой" почтовый индекс. (но почтовые индексы не являются полигонами).

Так что нет, недостаточно знать эти три части адреса. Страна практически бесполезно в этот момент, и почтовый индекс в лучшем случае зависит от местности/города. Номер дома может появляться десятки, если не сотни раз в почтовом индексе. (Я вырос в глухомани, где наш номер дома был уникальным,но это редко.)

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

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

Я отвечал на очень похожий вопрос буквально на днях. Возможно, Вам это пригодится.

Итак, теперь, когда я пролил дождь Судного дня на вашу идею, как насчет альтернативы? Конечно, я неравнодушен к SmartyStreets' автозаполнение, который предлагает адреса, гео-расположенные близко к пользователю, поскольку они печатают. Я должен упомянуть, что это бесплатно. На самом деле это не проверка адрес, пока пользователь не закончит или не выберет одно из предложений, но это уменьшает нажатия клавиш.

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


вы можете легко достичь этого, используя api обратного геокодирования google maps. Вот ссылка на документацию. ссылке


Я не знаю ни одной страны, где существует взаимно однозначное сопоставление между почтовым кодом и адресом улицы. Кроме Сингапура. почтовые индексы в SG В этом конкретном случае вы можете использовать почтовый индекс для заполнения оставшихся полей, в любом другом случае вы можете получить название города и адрес улицы, но вряд ли номер дома.

Пример 1: (выведите полный адрес улицы из post код)

https://geocode.xyz / 339696?geoit=xml

<geodata>
<latt>1.32035</latt>
<longt>103.87430</longt>
<elevation/>
<standard>
<stnumber>88</stnumber>
<addresst>88 GEYLANG BAHRU</addresst>
<postal>339696</postal>
<city>Singapore</city>
<prov>SG</prov>
<countryname>Singapore</countryname>
<confidence>0.5</confidence>
</standard>
</geodata>

Пример 2: (Получите наиболее распространенный адрес улицы и другие варианты названия города)

https://geocode.xyz / 27777?region=DE & geoit=xml

<geodata>
<latt>53.06060</latt>
<longt>8.58388</longt>
<elevation/>
<standard>
<stnumber>20</stnumber>
<addresst>20 Bokenbusch</addresst>
<postal>27777</postal>
<city>Ganderlesee</city>
<prov>DE</prov>
<countryname>Germany</countryname>
<confidence>0.5</confidence>
</standard>
<alt>
<loc>
<city>Ganderkesee</city>
<latt>53.06868</latt>
<longt>8.57437</longt>
<cc>951</cc>
</loc>
<loc>
<city>Bremen</city>
<latt>53.07675</latt>
<longt>8.57559</longt>
<cc>172</cc>
</loc>
<loc>
<city>Schierbrok</city>
<latt>53.08639</latt>
<longt>8.58037</longt>
<cc>166</cc>
</loc>

номер в " cc " указывает, сколько адресов улиц в этом городе разделяют данный почтовый индекс.

удачи!