Como posso pesquisar com base na distância com a API do Google Maps?
-
20-09-2019 - |
Pergunta
- Então, aqui está o problema ... Eu tenho um campo em que os usuários podem digitar seu endereço (que será geocodificado pela API do Google Maps).
- Eu tenho vários endereços de widgets no meu banco de dados (salvo como endereço. Novamente, pode ser facilmente geocodificado).
O que eu preciso é que o usuário digite seu endereço e para uma lista dos meus widgets aparecer com base na distância do endereço deles. Tenho milhares de endereços para meus widgets e usuários têm um número infinito de endereços, obviamente.
Alguma ideia?
Obrigado.
Solução
SELECT latitude, longitude, SQRT( POW( 69.1 * ( latitude - 52.58 ) , 2 ) +
POW( 69.1 * ( - 1.12 - longitude ) * COS( latitude / 57.3 ) , 2 ) ) AS distance
FROM location ORDER BY distance
Clique aquiEles fornecem várias maneiras de calcular a distância - escolha o que funciona melhor para você.
Outras dicas
Se você estiver armazenando os itens em um db mysql, então Aqui está a base do que você precisa
Você realmente não pode usar o Google para calcular sua filtragem de distância geográfica. Para fazer isso, você teria que enviar seus dados, armazená -los e consultá -los para você. Eles podem oferecer esse serviço, agora ou no futuro, mas eu não ouvi falar disso.
Em ordem de mais legal, mais capaz, mais caro:
A/ AS SOLTEIRO Pontos ou locais de interesse são informações dos clientes do seu site, coletam as coordenadas geográficas. Em seguida, use seu próprio mecanismo de pesquisa e pesquise a distância de um ponto. Pode ser uma violação do contrato com o Google, mas eles mencionam os resultados do 'cache' para tirar a carga de seus servidores. (O motivo é meu palpite pessoal.)
B/ use o Google para fazer geocodificação a granel, talvez um de cada vez, até um máximo de 5000 por dia de acordo com o endereço IP do seu site pela última vez que vi. Não é mesmo certo se isso não é uma violação do contrato de uso.
C/ compre um contrato com um serviço de geocodificação e armazene o que eles geocodem para você.
D/ compre uma biblioteca de geocodificação e faça sua própria geocodificação.
Esta postagem do blog, "Calcule a distância usando a API do Google Maps", pode ter alguma assistência.