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});
}