E depois deste último artigo sobre a Geolocation API do HTML5 que nos diz acertadamente (ou pelo menos tenta) a nossa latitude e longitude no planeta Terra, fomos um passo mais longe. Depois de sabermos onde estamos queremos saber a que distância em quilómetros e em linha reta estamos do Polo Norte. Sim, um dos pontos mais frios e extremos do planeta.
Primeiro, a demonstração

{link:http://www.techrepublic.com/+}Esta é a janela que surge no topo esquerdo do seu browser que deverá aceitar para ser mostrada a latitude e longitude.{/link}
Depois de aceitar a janela que surge no topo superior direito da janela já deverá aparecer abaixo a sua latitude e longitude (no formato que o Google Maps aceita) e a respetiva distãncia que você está do Polo Norte.
Agora, a explicação…
Mas como é que isto é feito? Trata-se de uma série cálculos programáticos que utilizam a fórmula de Haversine.
Trata-se de uma fórmula bastante importante e muito utilizada na navegação. Ela fornece as distâncias entre dois pontos de uma esfera a partir das suas latitudes e longitudes.
Trata-se de um caso especial, de uma fórmula mais geral de trigonometria esférica, a lei dos Haversines, e que relaciona os lados a ângulos de uma esfera triangular.
E é esta fórmula que faz todo o trabalho pesado. É com ela que conseguimos saber a distância em linha reta entre o lugar de onde estamos e o Polo Norte.
O código
E então o que temos aqui? São três funções:
- calculaDistancia Esta função é responsável por receber as coordenadas, converte-las para radianos, e depois aplicar a fórmula de Haversine tendo em consideração o raio da Terra em quilómetros. Obtendo o resultado, retorna-o para a função mostraLocalizacaoComDistancia.
- grausParaRadianos É responsável por converter as coordenadas de graus para radianos.
- mostraLocalizacaoComDistancia Por último, esta função mostra a nossa latitude e longitude no browser e de seguida, após obter o resultado da nossa distância ao Polo Norte, mostra-a no browser.
[codigofonte linguagem="javascript"]
function calculaDistancia(startCoords, destCoords)
{
var startLatRads = grausParaRadianos(startCoords.latitude);
var startLongRads = grausParaRadianos(startCoords.longitude);
var destLatRads = grausParaRadianos(destCoords.latitude);
var destLongRads = grausParaRadianos(destCoords.longitude);
var Radius = 6371; // raio da Terra em km
var distancia = Math.acos(Math.sin(startLatRads) * Math.sin(destLatRads)
Math.cos(startLatRads) * Math.cos(destLatRads) *
Math.cos(startLongRads – destLongRads)) * Radius;
return distancia;
}
function grausParaRadianos(graus)
{
var radianos = (graus * Math.PI)/180;
return radianos;
}
function mostraLocalizacaoComDistancia(posicao)
{
var latitude = posicao.coords.latitude;
var longitude = posicao.coords.longitude;
texto = "Você está na latitude, longitude (no formato que pode colocar no google maps) " latitude ", " longitude;
var km = calculaDistancia(posicao.coords, coodernadasPoloNorte);
texto = "<br />";
texto = "E está a " km " km de distância do Pólo Norte…";
var locdist = document.getElementById("localizacao");
locdist.innerHTML = texto;
}
var coodernadasPoloNorte = { latitude: 90, longitude: 0};
[/codigofonte]
E isto para que serve?
Serve para imensas coisas. Aliás, pense no que pode fazer com informação geográfica.
Pode fazer aplicações que não “obrigam” o utilizador a dar a sua localização atual, e a partir daí, caso tenha uma base de dados com as localizações de restaurantes ou hotéis, por exemplo, dizer ao utilizador, quais os que ficam nas imediações.
A Geolocation API que vem proposta pelo HTML5 veio abrir ainda mais horizontes das aplicações.
E se é certo que antigamente isto já era possível fazer, o que não era possível era ter uma tecnologia que funcionasse em todos os dispositivos.
Com algumas limitações em browsers mais antigos, é certo, mas o caminho é esse.
Texto escrito de acordo com o novo acordo ortográfico.
























