API de localização do Google vs.Mapas:Por que consultas idênticas produzem resultados diferentes?
-
05-07-2019 - |
Pergunta
Atualmente, estou perdendo um pouco de cabelo com a API AJAX do Google.O que eu faço é transformar dados estruturados de localização em uma consulta da API de pesquisa local do Google para fornecer aos usuários uma lista alternativa de resultados de lugares.
ex.:
http://ajax.googleapis.com/ajax/services/search/local?v=1.0&key=XXX&hl=en_US&mrt=localonly&rsz=large&q=pizza+Neustadt+DE
No entanto, às vezes a API se comporta de maneira muito estranha, muitas vezes não levando em consideração determinados parâmetros que passo para ela.Por exemplo:
Se eu pesquisar por "termo Roma Roma IT" no Google Maps, ele encontrará tudo termos em Roma como esperado.Se eu repetir a mesma pesquisa na API, não obtenho nenhum resultado (tenho que remover 'Roma' ou 'Roma' para que funcione - Roma é a região administrativa aqui e Roma é o nome da cidade).
Por que é que?
Outro exemplo.Existem cerca de 20 vilas, cidades e bairros diferentes chamados Neustadt na Alemanha.Agora, quando pesquiso no Google Maps, ele encontra apenas um, a menos que eu especifique um qualificador adicional, como uma região ou algo assim.
Agora, no nível da API, eu esperava que, ao passar parâmetros lat/lon junto com uma consulta para Neustadt, seria inteligente o suficiente para escolher o Neustadt correto observando a codificação geográfica.Mas isso não acontece, ele sempre escolhe a mesma Neustadt e ignora os dados geográficos.
q=pizza+Neustadt+DE&sll=48.8053,11.7579
Tive problemas semelhantes ao fazer pesquisas em caixas delimitadoras.A caixa delimitadora parece ter sido completamente ignorada, pois ainda estou obtendo dados de resultados a cem quilômetros de distância:
q=pizza+Neustadt+DE&sll=48.8053,11.7579&sspn=0.00001,0.00001
O último resultado nem está na mesma cidade;a pequena caixa delimitadora não deveria resultar em nenhum dado?Eu poderia até passar um BBox de tamanho zero e ainda assim obteria resultados.
Eu sei que existe uma documentação bastante extensa para a API de pesquisa local, mas ela nunca entra em detalhes sobre quais parâmetros são usados, quando e como uma consulta deve ser estruturada e avaliada, o que torna muito difícil obter resultados decentes.
Você tem alguma dica, sugestão ou sugestão sobre como se familiarizar com a pesquisa local do Google?
ATUALIZAR:Acabei de encontrar algo MUITO estranho.Alguém poderia acessar este site:
http://code.google.com/apis/ajaxsearch/documentation/localsearch/index.html
abra o firebug e monitore o tráfego HTTP ao digitar esta consulta de pesquisa:
test Rome Roma IT
Você obterá vários resultados no mapa.Agora copie a URL que foi contatada via AJAX e envie uma solicitação para ela na linha de comando:
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"
Agora obtenho ZERO resultados.Como pode isso ser possível?Definitivamente não são os argumentos de chave ou retorno de chamada, eu os removi sem qualquer alteração no resultado dessa consulta.
O Google está ampliando seus resultados de pesquisa quando uma consulta vem de um de seus servidores?
Solução
Eu encontrei exatamente esse mesmo problema e parece ser uma combinação de problemas de licenciamento e o fato de que o que o Google expõe por meio de suas APIs e o que ele exibe nas páginas de pesquisa do Maps/Google são uma combinação de pesquisas diferentes (pesquisa, mapas, base, dados etc.etc.)
Na questão do licenciamento, parece que o Google pode exibir mais informações quando um usuário passa pelo navegador, em comparação com solicitações por meio de chamadas de API (que teoricamente poderiam ser automatizadas).
Ver aqui por exemplo.