Usando Geolocation API - HTML5
Geolocation API
A API Geolocation é uma funcionalidade nova do HTML5, onde é solicitado ao usuário a obtenção da localização (latitude e longitude) que ele se encontra.
Como usar?
Esse é o código de como utilizar a API, leia os comentários. :)
if (navigator.geolocation) { // Verifica se o browser tem suporte ao geolocation
// Após a verificação, tentamos obter a posição atual do usuário.
// Este objeto tem uma série de parametros para a nossa função de localização
// Habilitar Alta Precisão (enableHighAccuracy): melhor precisão no resultado
// Tempo limite (timeout): o tempo que a função irá esperar pela resposta
// Vida máxima (maximumAge): vida útil do cache (posicao).
var opcional = {
enableHighAccuracy: true,
timeout: 50000,
maximumAge: 0
};
// Essa função (getCurrentPosition), aceita duas funções de callback (sucesso e erro) e parametros opcionais
navigator.geolocation.getCurrentPosition(sucesso, erro, opcional);
} else {
alert('Seu browser não suporta a Geolocation API');
}
// Funcao sucesso
// Ela vai ser invocada quando o usuário aceitar compartilhar sua localização
// O parametro dela sera um objeto com informações, tais como:
// Latitude e Longitude: coordenadas geográficas
// Precisão (Accuracy): nível de precisão lat/lng em metros
// Altitude: altura da posição acima do nivel do mar em metros, também
// Precisão de Altitude (Altitude Accuracy): precisão de altitude
// Rumo (Heading): direção de deslocamento
// Velocidade (Speed): velocidade de deslocamento
function sucesso(position) {
alert('latitude: ' + position.coords.latitude + ' Longitude: ' + position.coords.longitude);
}
// Funcao erro
// Vai ser invocada quando ocorrer um erro, seja ele: o browser nao conseguir obter a localização do usuario
// O usuario não permitir que o browser obtenha a localização etc.
// O parametro será, também, um objeto:
// Codigo (Code): código do erro
// Mensagem (Message): mensagem descritiva do erro
function erro(err) {
switch (err.code) {
case 1:
alert('Permissão negada');
break;
case 2:
alert('Posição indisponivel');
break;
case 3:
alert('Tempo esgotado');
break;
}
}
Assim que executar o código, não esqueça de autorizar o browser para obter sua localização. ;)
Fontes:
http://html5doctor.com/finding-your-position-with-geolocation/
http://www.w3schools.com/html/html5_geolocation.asp