Já ouviu falar em Geolocalização? Talvez você não tenha ouvido falar do termo em si, mas provavelmente você utiliza a geolocalização mais do que imagina. Ela está presente no seu dia a dia, quando você utiliza o GPS, faz um check-in em uma rede social ou traça uma rota em um mapa partindo do ponto onde você está. Resumindo, a geolocalização é uma maneira de mostrar aonde você se encontra no planeta terra(rs) através da latitude e longitude. É interessante e ao mesmo tempo assustador pois isso envolve uma questão muito interessante, a nossa privacidade. É óbvio que os navegadores e outros dispositivos que utilizam a geolocalização sempre questionam o usuário sobre a ativação do recurso ou compartilhamento da informação. Vamos entender um pouco mais sobre as técnicas que tornam possíveis a utilização desse recurso fantástico.
Métodos de Geolocalização
Há três maneiras populares de um agente de usuário descobrir sua posição no globo:
- Geolocalização IP:
É o método usado pela maioria dos navegadores web em computadores. Através de consultas whois e serviços de localização de IP, vai determinar a cidade ou região em que você está. - Triangulação GPRS:
Dispositivos conectados a uma rede de celulares e sem um GPS, ou com o GPS desligado, podem determinar sua posição pela triângulação das antenas GPRS próximas. É bem mais preciso que o método baseado em IP, vai mostrar em que parte do bairro você está. - GPS:
É o método mais preciso. Em condições ideais, a margem de erro é de apenas 5 metros.
Embora essas sejam as três maneiras mais populares de se resolver o problema, podem não ser as únicas. Alguns agentes de usuário podem usar uma combinação desses métodos, ou mesmo um novo método que venha a ser inventado. Por isso, a Geolocation API é agnóstica em relação ao método usado. Há apenas uma maneira de ligar e desligar o "modo de alta precisão", o que vai ter significado diferente em cada agente de usuário.(GEOLOCATION API - Métodos de Localização)
Vamos por em prática
O uso da API é extremante simples e o código é executado em Javascript. Para obter a posição precisamos basicamente executar o seguinte script:
navigator.geolocation.getCurrentPosition();
Então vamos criar a função (Javascript) para a fazer a chamada ao método da API:
function getLocation(){
navigator.geolocation.getCurrentPosition();
}
Para detectar se o dispositivo que faz a chamada dá suporte a API incluímos o seguinte trecho ao código:
function getLocation(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition();
}else{
alert("Geolocalização não é suportada por esse dispositivo");
}
}
Bom, mas com esse trecho de código ainda não conseguimos obter a latitude e longitude, para que isso aconteça precisamos conhecer os parâmetros que são passados ao método da API para posterior recuperação das coordenadas:
navigator.geolocation.getCurrentPosition(showPosition,getError, true or false);
Onde showPosition é o método que vai recuperar a latitude e longitude. Esse método recebe um parâmetro position que será responsável pela recuperação das nossas coordenas como no exemplo abaixo. Simples assim:
function showPosition(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
}
O método getError é opcional, porém importante, através dele podemos tratar os erros e também o feedback do usuário, caso por exemplo ele não aceite compartilhar as informações, recuperaremos essa informação através desse método.
function getError(erro) {
if (erro.PERMISSION_DENIED) {
alert('Usuário não aceitou compartilhar sua localização');
}
}
Esse método recebe um parâmetro que pode ser uma das seguintes constantes:
O 3º e último parâmetro recebido por getCurrentPosition() também é opcional: enableHighAccuracy, pode receber valores true ou false, caso seja definida como true e o dispositivo disponha de um GPS então poderemos obter uma localização mais precisa.
Bom, com isso e um pouco de conhecimento em desenvolvimento você pode usar a criatividade e fazer um bom proveito da API. Os navegadores que suportam a Geolocation API são: Internet Explorer 9+, Firefox, Chrome, Safari e Opera.
navigator.geolocation.getCurrentPosition();
Então vamos criar a função (Javascript) para a fazer a chamada ao método da API:
function getLocation(){
navigator.geolocation.getCurrentPosition();
}
Para detectar se o dispositivo que faz a chamada dá suporte a API incluímos o seguinte trecho ao código:
function getLocation(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition();
}else{
alert("Geolocalização não é suportada por esse dispositivo");
}
}
Bom, mas com esse trecho de código ainda não conseguimos obter a latitude e longitude, para que isso aconteça precisamos conhecer os parâmetros que são passados ao método da API para posterior recuperação das coordenadas:
navigator.geolocation.getCurrentPosition(showPosition,getError, true or false);
Onde showPosition é o método que vai recuperar a latitude e longitude. Esse método recebe um parâmetro position que será responsável pela recuperação das nossas coordenas como no exemplo abaixo. Simples assim:
function showPosition(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
}
O método getError é opcional, porém importante, através dele podemos tratar os erros e também o feedback do usuário, caso por exemplo ele não aceite compartilhar as informações, recuperaremos essa informação através desse método.
function getError(erro) {
if (erro.PERMISSION_DENIED) {
alert('Usuário não aceitou compartilhar sua localização');
}
}
Esse método recebe um parâmetro que pode ser uma das seguintes constantes:
- PERMISSION_DENIED: usuário negou acesso as informações
- POSITION_UNAVAILABLE: posição indisponível
- TIMEOUT: tempo limite esgotado
- UNKNOWN_ERROR: erro desconhecido ou inesperado
O 3º e último parâmetro recebido por getCurrentPosition() também é opcional: enableHighAccuracy, pode receber valores true ou false, caso seja definida como true e o dispositivo disponha de um GPS então poderemos obter uma localização mais precisa.
Bom, com isso e um pouco de conhecimento em desenvolvimento você pode usar a criatividade e fazer um bom proveito da API. Os navegadores que suportam a Geolocation API são: Internet Explorer 9+, Firefox, Chrome, Safari e Opera.
Exemplo
O exemplo disponibilizado a seguir é uma página html que exibe a latitude, longitude e um marcador em um mapa da Google Maps API de acordo com as coordenadas recuperadas. Para que o exemplo funcione corretamente é necessário que a página seja executada em um servidor web(IIS, Tomcat, Apache) e que se tenha acesso a internet. Lembrando que de acordo com o método de Geolocalização utilizado, a localização pode não ser tão precisa. Ao executar o exemplo clicando no botão Localizar você será questionado se deseja disponibilizar a sua localização. Ressaltando que cada dispositivo ou navegador exibirá uma mensagem personalizada.
Como o foco é a API de Geolocalização, a explicação sobre os métodos da API Google Maps ficaram para outro post. Segue abaixo o arquivo para da download do arquivo com o código de exemplo. O código está bem comentado é bem simples e objetivo.
geolocation.html |
Quer saber um pouco mais sobre Geolocation API e HTML, segue as referências utilizadas para esse post:
Bom é isso aí, até a próxima se Deus quiser.
Hands On!
Daniel Paulo de Assis
- http://tableless.com.br/html5/?chapter=24
- http://www.w3schools.com/html/html5_geolocation.asp
- http://diveintohtml5.com.br/geolocation.html
- https://developers.google.com/maps/
Bom é isso aí, até a próxima se Deus quiser.
Hands On!
Daniel Paulo de Assis