Google Geocoding - анализ address_components, которые могут возвращаться по-разному - PullRequest
9 голосов
/ 11 июня 2011

Я использую API Карт Google V3. Я отправляю адресный поиск, чтобы получить правильный геокодированный результат, включая адрес, название заведения и широты / долготы.

Моя проблема в том, что ответ геокодера может быть отформатирован по-разному. Он всегда повторяет одну и ту же структуру, но некоторые ответы используют разные ключи для структуры данных address_components.

Например, некоторые поиски приводят к:

establishment               -> location name
street_number               -> address street number
route                       -> the street name
locality                    -> the city
administrative_area_level_1 -> the state
postal_code                 -> zip/postal code

тогда как, если бы я искал общую область, такую ​​как "Hampton Beach, NH", я бы получил:

sublocality                 -> beach name / area
administrative_area_level_3 -> city/town name
administrative_area_level_1 -> the state
postal_code                 -> zip/postal code

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

Замечу, что ответ также возвращает тип «formatted_address», который возвращает его как: «Хэмптон-Бич, NH 03842, США» ИЛИ «Бостонский университет, 1 University Rd, Бостон, MA 02215-1407, США» Вы можете видеть, они тоже довольно разные. Я мог бы разделить запятыми, но я хотел бы использовать фактические address_components для безупречной вставки в базу данных.

Ответы [ 2 ]

14 голосов
/ 13 июня 2011

Почему бы не использовать в зеркале БД только следующие ключи?

street_number                    -> address street number
route                            -> the street name
locality                         -> the city/town    
administrative_area_level_3      -> the city/town
administrative_area_level_1      -> the state
postal_code                      -> zip/postal code

Если существует locality, используйте его в своем запросе (как представляется, для доставки более подробной информации - http://code.google.com/apis/maps/documentation/geocoding/#JSON)

Где нет street nameили locality существует, запрос administrative_area_level_3 и administrative_area_level_1

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

** Я предполагаю, что вы заботитесь только о США.

1 голос
/ 11 июня 2011

Адреса очень «человеческие» вещи. Я думаю, что причина того, что данные Google такие грязные, заключается в том, что их исходные данные грязные, но, вероятно, схожи для одной области.

Какие части адреса имеют к вам отношение? Если вы просто кормите это человеку, просто дайте ему все, что у вас есть?

...