Как сопоставить результаты API геокодирования Google с простым городом, регионом, страной - PullRequest
2 голосов
/ 12 декабря 2010

У меня есть несколько маркеров на карте, и когда пользователь нажимает на них, я использую геокодер Google, чтобы получить информацию об адресе. Проблема в том, что Google возвращает эти данные. Я хочу отобразить адрес в согласованном формате, например

  • Ванкувер, Британская Колумбия, Канада
  • Сиэтл, Вашингтон, США
  • Сидней, Новый Южный Уэльс, Австралия

Кто-нибудь знает простой способ синтаксического анализа этих данных, поэтому я получаю несколько простых простых json, таких как

{"city":"Vancouver", "region":"British Columbia", "country":"Canada"}

Спасибо.

1 Ответ

4 голосов
/ 12 декабря 2010

О, чувак, дни, когда я думал, что политическая география была такой простой, были слаще.Если Google может вернуть данные, как это, они, безусловно, будут.Вместо этого вы получаете беспорядок локальности, подмести, административного_уровня_уровня_, страны и т. Д.

Чтобы проиллюстрировать это, рассмотрим следующее:

http://maps.googleapis.com/maps/api/geocode/json?address=11215&sensor=false

http://maps.googleapis.com/maps/api/geocode/json?address=10010&sensor=false

Для Манхэттена ты в хорошей форме.Вы получаете район (Манхэттен), город (Нью-Йорк), округ (Нью-Йорк) и штат (Нью-Йорк).Для Бруклина все не так чисто.Вы получаете район (Бруклин), округ (Кингс) и штат (Нью-Йорк).

Теперь, если вы немного выйдете на Лонг-Айленд, вы получите больше удовольствия:

http://maps.googleapis.com/maps/api/geocode/json?address=40.723464,%20-73.716282&sensor=false

В этом случае вы получаете деревню (Цветочный парк), город (Хемпстед), округ (Нассау) и штат (Нью-Йорк), но все немного запутано.

Это вариация в пределах 20 миль в одном штате.Если вы выйдете из этого, вы можете рассчитывать еще меньше.В Великобритании то, что мы хотели бы видеть в Лондоне, будет небольшим районом Большого Лондона.

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

...