Preciso de uma lista de países, estados e cidades com base em uma coleção de valores de latitude / longitude que possuo. Preciso armazenar essas informações de forma que a hierarquia seja preservada e sem duplicatas (por exemplo, "EUA" e "Estados Unidos" e "Estados Unidos da América" são o mesmo país; quero apenas uma instância desse país em meu banco de dados) .
Isso é possível fazer com a API do Google Map?
google-maps
geolocation
google-maps-api-3
geocoding
StackOverflowNewbie
fonte
fonte
Respostas:
O que você está procurando é chamado de geocodificação reversa . O Google fornece um serviço de geocodificação reversa do lado do servidor por meio da API de geocodificação do Google , que você deve poder usar em seu projeto.
Esta é a aparência de uma resposta à seguinte solicitação:
Resposta:
Você também pode optar por receber a resposta em xml em vez de json, simplesmente substituindo json por xml no URI de solicitação:
Pelo que eu sei, o Google também retornará o mesmo nome para componentes de endereço, especialmente para nomes de alto nível, como nomes de países e cidades. No entanto, tenha em mente que, embora os resultados sejam muito precisos para a maioria dos aplicativos, você ainda pode encontrar erros ortográficos ocasionais ou resultados ambíguos.
fonte
sensor=false
faz?Você tem uma resposta básica aqui: obter o nome da cidade usando geolocalização
Mas para o que você está procurando, eu recomendo este caminho.
Apenas se você também precisar de Administrative_area_level_1, para armazenar coisas diferentes para Paris, Texas, EUA e Paris, Ile-de-France, França e fornecer um substituto manual:
-
Há um problema no caminho de Michal, que leva o primeiro resultado, não um determinado. Ele usa resultados [0]. A maneira que eu acho que (eu acabei de modificar seu código) é pegar APENAS o resultado cujo tipo é "localidade", que está sempre presente, mesmo em um eventual fallback manual caso o navegador não suporte geolocalização.
Seu jeito: os resultados obtidos são diferentes de usar http://maps.googleapis.com/maps/api/geocode/json?address=bucharest&sensor=false em vez de usar http://maps.googleapis.com/maps/api/geocode /json?latlng=44.42514,26.10540&sensor=false (pesquisa por nome / pesquisa por lat & lng)
Desta forma: mesmos resultados buscados.
fonte
Usei essa pergunta como ponto de partida para minha própria solução. Achei apropriado contribuir com meu código de volta, já que ele é menor que o de tabacitu
Dependências:
Código:
fonte
Achei o javascript do GeoCoder um pouco problemático quando o incluí em meus arquivos jsp.
Você também pode tentar isso:
fonte
$.get(url).success(function(data)
para$.get(url, function(data)
e está funcionando bemEscrevi esta função que extrai o que você está procurando com base no
address_components
retornado da API gmaps. Esta é a cidade (por exemplo).Mude
locality
paraadministrative_area_level_1
para o estado etc.No meu código js estou usando assim:
Retornará:
Waltham, MA
fonte
Experimente este código, este código funciona comigo
fonte
Eu criei uma pequena função de mapeador:
É uma solução para o Angular 4, mas acho que você entendeu.
Uso:
Desta forma, o
address
objeto será algo assim:Espero que ajude!
fonte
fonte
@ Szkíta teve uma ótima solução ao criar uma função que obtém as partes do endereço em um array nomeado. Aqui está uma solução compilada para aqueles que desejam usar JavaScript simples.
Função para converter resultados para a matriz nomeada:
Geocodifique os valores LAT / LNG:
fonte