API местоположения Google против.Карты:Почему одинаковые запросы дают разные результаты?
-
05-07-2019 - |
Вопрос
В настоящее время я теряю волосы из-за API AJAX Google.Что я делаю, так это превращаю структурированные данные о местоположении в запрос API локального поиска Google, чтобы предоставить пользователям альтернативный список результатов мест.
бывший.:
http://ajax.googleapis.com/ajax/services/search/local?v=1.0&key=XXX&hl=en_US&mrt=localonly&rsz=large&q=pizza+Neustadt+DE
Однако иногда API ведет себя очень странно, часто не принимая во внимание определенные параметры, которые я ему передаю.Например:
Если я ищу на Картах Google «термин Rome Roma IT», то он находит все условия в Риме, как и ожидалось.Если я повторю тот же поиск в API, я получу нулевые результаты (чтобы он работал, мне нужно удалить либо «Рома», либо «Рим»: Рома — это административный регион, а Рим — название города).
Почему это?
Другой пример.В Германии около 20 городов и поселков под названием Нойштадт.Теперь, когда я ищу на Картах Google, он находит только один, если я не укажу дополнительный уточнение, например регион или что-то в этом роде.
На уровне API я ожидал, что при передаче параметров широты и долготы вместе с запросом на Нойштадт будет достаточно умно выбрать правильный Нойштадт, посмотрев на геокодирование.Но этого не происходит, он всегда выбирает один и тот же Нойштадт и игнорирует геоданные.
q=pizza+Neustadt+DE&sll=48.8053,11.7579
У меня были похожие проблемы при поиске в ограничивающей рамке.Ограничивающая рамка, кажется, полностью игнорируется, поскольку я все еще получаю данные результатов, которые находятся за сто километров:
q=pizza+Neustadt+DE&sll=48.8053,11.7579&sspn=0.00001,0.00001
Последний результат даже не в одном городе;разве крошечная ограничивающая рамка не должна приводить к каким-либо данным?Я мог бы даже передать BBox нулевого размера, и все равно получил бы результаты.
Я знаю, что на самом деле существует довольно обширная документация по API локального поиска, но в ней никогда не описывается, какие параметры используются, когда и как запрос должен быть структурирован и оценен, что очень затрудняет получение достойных результатов.
Есть ли у вас какие-либо подсказки, подсказки и предложения о том, как освоить локальный поиск Google?
ОБНОВЛЯТЬ:Я только что нашел кое-что ДЕЙСТВИТЕЛЬНО странное.Может кто-нибудь зайти на этот сайт:
http://code.google.com/apis/ajaxsearch/documentation/localsearch/index.html
откройте Firebug и отслеживайте HTTP-трафик при вводе этого поискового запроса:
test Rome Roma IT
Вы получите кучу результатов на карте.Теперь скопируйте URL-адрес, к которому обращались через AJAX, и отправьте к нему запрос в командной строке:
curl "http://www.google.com/uds/GlocalSearch?key=internal-sample&v=1.0&rsz=large&sll=41.97684819454683%2C12.486648559570312&sspn=0.204185%2C0.549316&q=test%20Rome%20Roma%20IT&lssrc=lsc&lscstyle=final&start=0&callback=_callbacks_._5g139yfuc"
Теперь я получаю НУЛЕВОЙ результат.Как такое возможно?Это определенно не ключ или аргументы обратного вызова, я удалил их без каких-либо изменений в результате этого запроса.
Расширяет ли Google результаты поиска, когда запрос поступает с одного из их серверов?
Решение
Я столкнулся с точно такой же проблемой, и, похоже, она связана с сочетанием проблем с лицензированием и тем фактом, что то, что Google предоставляет через свои API и то, что он отображает на страницах поиска Карт/Google, представляет собой комбинацию различных поисковых запросов (поиск, карты, база, данные и т. д. и т. п.)
Что касается лицензирования, похоже, что Google может отображать более информацию, когда пользователь заходит через браузер, по сравнению с запросами через вызовы API (которые теоретически могут быть автоматизированы).
Видеть здесь например.