HTML5 - Geolocalização

A API de localização geográfica HTML5 permite que você compartilhe sua localização com seus sites favoritos. Um JavaScript pode capturar sua latitude e longitude e pode ser enviado para um servidor da web de back-end e fazer coisas extravagantes de localização, como encontrar empresas locais ou mostrar sua localização em um mapa.

Hoje, a maioria dos navegadores e dispositivos móveis oferece suporte à API de geolocalização. As APIs de geolocalização funcionam com uma nova propriedade do objeto navegador global, isto é. Objeto de geolocalização que pode ser criado da seguinte maneira -

var geolocation = navigator.geolocation;

O objeto de geolocalização é um objeto de serviço que permite que os widgets recuperem informações sobre a localização geográfica do dispositivo.

Métodos de Geolocalização

O objeto de geolocalização fornece os seguintes métodos -

Sr. Não. Método e Descrição
1 getCurrentPosition ()

Este método recupera a localização geográfica atual do usuário.

2 watchPosition ()

Este método recupera atualizações periódicas sobre a localização geográfica atual do dispositivo.

3 clearWatch ()

Este método cancela uma chamada watchPosition em andamento.

Exemplo

A seguir está um código de exemplo para usar qualquer um dos métodos acima -

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler);
}

Aqui, showLocation e errorHandler são métodos de retorno de chamada que seriam usados ​​para obter a posição real conforme explicado na próxima seção e para tratar erros, se houver algum.

Propriedades de localização

Os métodos de geolocalização getCurrentPosition () e getPositionUsingMethodName () especificam o método de retorno de chamada que recupera as informações de localização. Esses métodos são chamados de forma assíncrona com um objetoPosition que armazena as informações de localização completas.

o Positionobjeto especifica a localização geográfica atual do dispositivo. A localização é expressa como um conjunto de coordenadas geográficas junto com informações sobre rumo e velocidade.

A tabela a seguir descreve as propriedades do objeto Posição. Para as propriedades opcionais, se o sistema não puder fornecer um valor, o valor da propriedade será definido como nulo.

Propriedade Tipo Descrição
coords objetos Especifica a localização geográfica do dispositivo. A localização é expressa como um conjunto de coordenadas geográficas junto com informações sobre rumo e velocidade.
coords.latitude Número Especifica a estimativa de latitude em graus decimais. O intervalo de valores é [-90,00, +90,00].
coords.longitude Número Especifica a estimativa da longitude em graus decimais. O intervalo de valores é [-180,00, +180,00].
coords.altitude Número [Opcional] Especifica a estimativa da altitude em metros acima do elipsóide WGS 84.
coords.accuracy Número [Opcional] Especifica a precisão das estimativas de latitude e longitude em metros.
coords.altitudeAccuracy Número [Opcional] Especifica a precisão da estimativa da altitude em metros.
coords.heading Número [Opcional] Especifica a direção atual do movimento do dispositivo em graus, no sentido horário em relação ao norte verdadeiro.
coords.speed Número [Opcional] Especifica a velocidade de solo atual do dispositivo em metros por segundo.
timestamp encontro Especifica a hora em que as informações de localização foram recuperadas e o objeto Posição criado.

Exemplo

A seguir está um código de exemplo que faz uso do objeto Position. Aqui, o método showLocation é um método de retorno de chamada -

function showLocation( position ) {
   var latitude = position.coords.latitude;
   var longitude = position.coords.longitude;
   ...
}

Tratamento de erros

A geolocalização é complicada e é muito necessária para detectar qualquer erro e tratá-lo com elegância.

Os métodos de geolocalização getCurrentPosition () e watchPosition () usam um método de retorno de chamada do manipulador de erros que fornece PositionErrorobjeto. Este objeto tem duas propriedades a seguir -

Propriedade Tipo Descrição
código Número Contém um código numérico para o erro.
mensagem Corda Contém uma descrição legível do erro.

A tabela a seguir descreve os possíveis códigos de erro retornados no objeto PositionError.

Código Constante Descrição
0 ERRO DESCONHECIDO O método falhou em recuperar a localização do dispositivo devido a um erro desconhecido.
1 PERMISSÃO NEGADA O método falhou ao recuperar a localização do dispositivo porque o aplicativo não tem permissão para usar o Serviço de Localização.
2 POSITION_UNAVAILABLE A localização do dispositivo não pôde ser determinada.
3 TEMPO ESGOTADO O método não conseguiu recuperar as informações de localização dentro do intervalo de tempo limite máximo especificado.

Exemplo

A seguir está um código de exemplo que faz uso do objeto PositionError. Aqui, o método errorHandler é um método de retorno de chamada -

function errorHandler( err ) {
   
   if (err.code == 1) {
      
      // access is denied
   }
   ...
}

Opções de posição

A seguir está a sintaxe real do método getCurrentPosition () -

getCurrentPosition(callback, ErrorCallback, options)

Aqui o terceiro argumento é o PositionOptions objeto que especifica um conjunto de opções para recuperar a localização geográfica do dispositivo.

A seguir estão as opções que podem ser especificadas como terceiro argumento -

Propriedade Tipo Descrição
enableHighAccuracy boleano Especifica se o widget deseja receber a estimativa de localização mais precisa possível. Por padrão, isso é falso.
tempo esgotado Número A propriedade timeout é o número de milissegundos que seu aplicativo da web está disposto a esperar por uma posição.
maximumAge Número Especifica o tempo de expiração em milissegundos para informações de localização em cache.

Exemplo

A seguir está um código de amostra que mostra como usar os métodos mencionados acima -

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler, {maximumAge: 75000});
}