Geolocation API - JavaScript
A API de Geolocalização permite que scripts em JavaScript acessem informações sobre a localização geográfica do usuário. Para utilizá-la, o objeto navigator
geolocation
Geolocation
getCurrentPosition()
getCurrentPosition(success);
getCurrentPosition(success, error);
getCurrentPosition(success, error, options);
: uma função executada quando as coordenadas do usuário são obtidas com sucesso.success
: uma função executada em caso de erro ao tentar obter a localização.error
: parâmetros opcionais de configuração.options
Como a localização é obtida de forma assíncrona, o parâmetro success
GeolocationPosition
coords
GeolocationCoordinates
coords
: a latitude em graus.latitude
: a longitude em graus.longitude
: altura em metros acima do nível do mar.altitude
: velocidade atual do usuário (em metros por segundo), se aplicável.speed
: precisão da latitude e longitude em metros.accuracy
: precisão da altitude em metros.altitudeAccuracy
: direção em que o dispositivo está apontando. O valor é representado em graus (0° corresponde ao norte, e os valores aumentam no sentido horário). Se o dispositivo estiver parado ou não puder determinar a direção, esse valor seráheading
ouNaN
.null
A seguir, um exemplo de como obter os dados de localização:
function success(position) {
console.log("Latitude: ", position.coords.latitude);
console.log("Longitude: ", position.coords.longitude);
console.log("Altitude: ", position.coords.altitude);
console.log("Velocidade: ", position.coords.speed);
console.log("Precisão: ", position.coords.accuracy);
console.log("Direção: ", position.coords.heading);
}
navigator.geolocation.getCurrentPosition(success);
Por motivos de segurança, os navegadores exigem que o usuário conceda permissão explícita para acessar sua localização. Quando o método geolocation.getCurrentPosition()
Tratamento de Erros
Se o usuário negar o acesso à localização ou ocorrer outro problema, a função error
GeolocationPositionError
: uma descrição legível do erro.message
: um código de erro que pode assumir os seguintes valores:code
: o usuário negou a permissão para acessar a localização.1 (PERMISSION_DENIED)
: a localização está indisponível.2 (POSITION_UNAVAILABLE)
: o tempo limite para obter a localização foi excedido.3 (TIMEOUT)
Exemplo de implementação com tratamento de erros:
function successHandler(position) {
console.log("Latitude: ", position.coords.latitude);
console.log("Longitude: ", position.coords.longitude);
}
function errorHandler(error) {
console.log("Erro: ", error.message);
console.log("Código do erro: ", error.code);
}
navigator.geolocation.getCurrentPosition(successHandler, errorHandler);
Se a permissão for negada, o console exibirá algo como:
Erro: User denied Geolocation Código do erro: 1
Monitoramento Contínuo de Posição
O método watchPosition()
getCurrentPosition()
clearWatch()
Abaixo está um exemplo prático que monitora continuamente a posição do dispositivo até que o monitoramento seja explicitamente interrompido:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8" />
<title>Exemplo de Geolocalização</title>
</head>
<body>
<button id="btn">Parar Monitoramento</button>
<script>
function successHandler(position) {
console.log("Latitude: ", position.coords.latitude);
console.log("Longitude: ", position.coords.longitude);
}
function errorHandler(error) {
console.log("Erro: ", error.message);
}
const geolocation = navigator.geolocation;
const watchID = geolocation.watchPosition(successHandler, errorHandler);
document.getElementById("btn").addEventListener("click", () => geolocation.clearWatch(watchID));
</script>
</body>
</html>
Neste exemplo, o monitoramento contínuo da posição do dispositivo é interrompido ao clicar no botão "Parar Monitoramento". Enquanto o monitoramento estiver ativo, a cada mudança na posição do dispositivo, a função successHandler