Obtendo a localização do usuário
Obter a localização de um usuário é algo muito importante para aplicações que desejam mostrar conteúdos de acordo com a região do usuário. Independente do tipo de aplicação, o conceito é obter as coordenadas do usuário e postar para o servidor da aplicação, que vai retornar um conteúdo de acordo a localização. Neste texto, vou mostrar como você pode obter as coordenadas do usuário.
Para isso, os navegadores modernos suportam um objeto chamado navigator. Esse objeto navigator, responsável por guardar informações do navegador, possui dentro um objeto chamado geolocation. O objeto geolocation possui um método chamado "watchPosition", que permite obter a posição do usuário. A implementação é feita desta forma:
navigator.geolocation.watchPosition(funcao_callback_de_sucesso, funcao_callback_de_erro, {json com as configuracoes da geolocalizacao});
Como o retorno das informações é assíncrono, é necessário ter uma função de retorno para o caso de sucesso, e uma função para o caso de erro. No terceiro parâmetro, se pode definir o timeout em milisegundos, e a frequeência em milisegundos, que é o intervalo de tempo em que uma nova consulta vai ser efetuada.
Se você testar este recurso num navegador a partir de seu computador local, ele vai pedir permissão para rastrear a sua posição, você deve aceitar para a página retornar as suas coordenadas. Caso você coloque este recurso num servidor, pode ser necessário acessar o link da página a partir de uma conexão segura (https).
Se a programação for feita no Phonegap, você precisa ativar este recurso somente depois do Phonegap estar pronto (deviceready). Se o aparelho não tiver o GPS ativado, pode ser necessário executar a geolocalização se existir conexão com a internet.
Abaixo segue um exemplo mostrando um timeout de 10 segundos e a repetição da geolocalização a cada 30 segundos
watchID = navigator.geolocation.watchPosition(onSuccess, onError,{timeout: 10000, enableHighAccuracy: false, frequency: 30000 });
De acordo ao que foi mostrado antes, o método "watchPosition" tem duas funções de callback. A função de sucesso recebe um objeto position com todos os dados relativos a posição do usuário. Já a função de erro recebe um objeto error com os detalhes do problema.
No link abaixo você tem um exemplo completo de geolocalização, toda a programação está nesta página.
https://www.dbins.com.br/ferramentas/geolocalizacao/index.html/