Несоответствия API геокодирования в Картах Google - PullRequest
5 голосов
/ 08 августа 2011

Я пытаюсь геокодировать этот адрес "188th Street & Third Avenue, Bronx NY"

Если вы выполните этот запрос геокодирования через геокодер maps api v3, вы получите около 10 или около того результатов, ни один из которых не находится в Нью-Йорке.

http://maps.google.com/maps/api/geocode/xml?sensor=false&address=188th%20street%20&%20third%20avenue,%20bronx%20NY

Если вы вставите этот же адрес в карты Google, он приведет вас прямо к пересечению в бронкс.

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

(сначала я подумал, что это потому, что было написано «третий», поэтому я заменил его на «3-й». Я по-прежнему получил 10 результатов с одним в Нью-Йорке. Однако это было в королевах, а не в бронксе.)

1 Ответ

9 голосов
/ 08 августа 2011

Проблема в том, что вы не кодируете URL & в адресе и используете его как есть.Но это & используется для разделения аргументов URL, например, между sensor=false&address=.Таким образом, данные за пределами & не считаются частью адреса.Вам нужно заменить & в аргументе адреса его URL-кодировкой %26:

http://maps.google.com/maps/api/geocode/xml?sensor=false&address=188th%20street%20%26%20third%20avenue,%20bronx%20NY

, и вы получите одно правильное местоположение в Нью-Йорке,Бронкс:

<location>
    <lat>40.8588700</lat> 
    <lng>-73.8911250</lng> 
</location>

Только для информации: веб-служба геокодирования Google использует + для пробелов в адресе.Кроме того, рекомендуемый URL-адрес службы http://maps.googleapis.com/maps/api/geocode/.Таким образом, вы могли бы также выполнить запрос:

http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address=188+street,%26+third+avenue,+bronx+NY

, который выглядит немного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...