2013-08-08 3 views
0

Результаты URL https://maps.googleapis.com/maps/api/geocode/json?address=75019&sensor=false&components=postal_code:75019|country:US отличается от результатов URL https://maps.googleapis.com/maps/api/geocode/json?address=75019&sensor=false&components%3Dpostal_code:75019|country:USGoogle гео-кодирования возвращает разные результаты, если URL кодируется в сравнении, если это не

Единственное различие между этими двумя URL, является то, что «=» символ после " компоненты "кодируется url во втором URL-адресе. В результате во втором URL: я получаю 2 результата назад, один для Парижа & один для Техаса, что нежелательно. Мне нужны результаты только для страны = США. Мы используем второй url в производстве, но хотим получить результаты, полученные с первого URL-адреса.

Проблема в том, что, хотя фильтр четко упоминает страну как США, почему я получаю адрес из Франции?

Любое решение или идеи? Правильно ли диагноз?

ответ

0

Вы не с указанием страны, как США во втором URL:

Второй URL дает Google параметр с именем «компоненты% 3Dpostal_code: 75019 | Страна: США» без содержания, в то время как первый один дает google параметр с именем «компоненты» с содержанием «postal_code: 75019 | country: US» - знак = важно как разделитель между именем параметра и значением. Если вы url-encode его, он больше не рассматривается для этой цели.

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

Поскольку вы не используете другие символы с кодировкой url (по крайней мере, не в ссылке, показанной выше), также может потребоваться выполнить отдельный шаг расшифровки URL-адреса где-то перед отправкой запроса на google (если вы абсолютно не может изменить производственный код).

+0

Имеет смысл. Мы должны просто кодировать _values_ и ничего больше. –