Consegui obter a latitude e longitude do usuário usando a geolocalização baseada em HTML.
//Check if browser supports W3C Geolocation API
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get latitude and longitude;
function successFunction(position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
}
Quero exibir o nome da cidade, parece que a única maneira de obtê-lo é usar uma API de geolocalização reversa. Li a documentação do Google para geolocalização reversa, mas não sei como obter a saída no meu site.
Não sei como usar: "http://maps.googleapis.com/maps/api/geocode/json?latlng='+lat+','+long+'&sensor=true"
para exibir o nome da cidade na página.
Como posso conseguir isso?
javascript
html
geolocation
lisovaccaro
fonte
fonte
Respostas:
Você faria algo assim usando a API do Google.
Observe que você deve incluir a biblioteca do Google Maps para que isso funcione. O geocoder do Google retorna muitos componentes de endereço, portanto, você deve adivinhar qual será a cidade.
"administrativo_area_level_1" geralmente é o que você procura, mas às vezes a localidade é a cidade que você procura.
De qualquer forma - mais detalhes sobre os tipos de resposta do Google podem ser encontrados aqui e aqui .
Abaixo está o código que deve executar o truque:
fonte
Outra abordagem é usar meu serviço, http://ipinfo.io , que retorna o nome da cidade, região e país com base no endereço IP atual do usuário. Aqui está um exemplo simples:
Aqui está um exemplo mais detalhado do JSFiddle que também imprime as informações completas da resposta, para que você possa ver todos os detalhes disponíveis: http://jsfiddle.net/zK5FN/2/
fonte
O uso da geolocalização html5 requer permissão do usuário. Caso você não queira isso, procure um localizador externo como https://geolocation-db.com. IPv6 é suportado. Sem restrições e solicitações ilimitadas permitidas.
Exemplo
Para um exemplo puro de javascript, sem usar o jQuery, confira esta resposta.
fonte
Você pode obter o nome da cidade, país, nome da rua e outros dados geográficos usando a API de geocodificação do Google Maps
e para exibir esses dados na página usando jQuery
fonte
Aqui está a versão de trabalho atualizada para mim, que receberá Cidade / Cidade. Parece que alguns campos foram modificados na resposta json. Referindo respostas anteriores para essas perguntas. (Graças a Michal e mais uma referência: Link
fonte
geolocator.js pode fazer isso. (Eu sou o autor).
Obtendo o nome da cidade (endereço limitado)
Obtendo informações completas sobre o endereço
O exemplo abaixo tentará primeiro a API de localização geográfica em HTML5 para obter as coordenadas exatas. Se falhar ou rejeitar, ele retornará à pesquisa de Geo-IP. Depois de obter as coordenadas, o código geográfico será revertido para um endereço.
Isso usa as APIs do Google internamente (para pesquisa de endereços). Portanto, antes desta chamada, você deve configurar o geolocator com sua chave da API do Google.
O Geolocator suporta localização geográfica (via pesquisas em HTML5 ou IP), geocodificação, pesquisas de endereço (geocodificação reversa), distância e duração, informações de fuso horário e muito mais recursos ...
fonte
Depois de pesquisar e montar algumas soluções diferentes, além das minhas próprias coisas, criei esta função:
fonte
Você pode usar https://ip-api.io/ para obter o nome da cidade. Ele suporta IPv6.
Como bônus, permite verificar se o endereço IP é um nó tor, proxy público ou spammer.
Código Javascript:
Código HTML
Saída JSON
fonte
Como o @PirateApp mencionado em seu comentário, é explicitamente contra o Licenciamento da API do Google Maps usar a API do Google como você deseja.
Você tem várias alternativas, incluindo baixar um banco de dados Geoip e consultá-lo localmente ou usar um serviço de API de terceiros, como meu serviço ipdata.co .
O ipdata fornece os dados de localização geográfica, organização, moeda, fuso horário, código de chamada, sinalizador e status do Tor Exit Node de qualquer endereço IPv4 ou IPv6.
E é escalável com 10 pontos de extremidade globais, cada um capaz de lidar com> 10.000 solicitações por segundo!
O violino; https://jsfiddle.net/ipdata/6wtf0q4g/922/
fonte
Aqui está outro exemplo disso. Adicionando mais à resposta aceita, possivelmente mais abrangente .. é claro que switch -case fará com que pareça elegante.
fonte
Aqui está uma função fácil que você pode usar para obtê-la. Usei axios para fazer a solicitação da API, mas você pode usar qualquer outra coisa.
fonte