Foto de formas no gelo no Polo Norte.

{link:http://www.bensaunders.com/}Foto do Polo Norte, por Ben Saunders.{/link}

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

Print-screen da janela que deverá aceitar para obter a sua latitude e longitude.

{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.

Depois de aceitar o pedido do browser, a sua localização deverá aparecer aqui…

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

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.

Tags: , , , , , ,

Fundador do PowerUser, programador PHP, e dono orgulhoso de um Android | LinkedIn »

1 Resposta Subscrever respostas

  1. Nuno Nunes 25 de Maio de 2013 em 9:10 #

    Boas, estou a tentar fazer este exemplo e não me está a funcionar. No dreamweaver dá erro na fórmula de cálculo

    var distancia = Math.acos(Math.sin(startLatRads) * Math.sin(destLatRads) *
    Math.cos(startLatRads) * Math.cos(destLatRads) *
    Math.cos(startLongRads – destLongRads)) * Radius;

Deixar um Comentário

Smartphones Android - As Nossas Escolhas

Análise ao Sony Xperia Z1 – serão suficientes as specs?

smartphone sony xperia z1

Análise ao LG G3 – terá a LG dado o salto para a frente da corrida?

ecrã do lg g3

Análise ao LG G Flex – o ecrã curvo, será o futuro?

lg g flex ecrã curvo

Análise ao HTC One M8 – A sequela está de volta!

smartphone htc one m8

Análise ao OnePlus One – o smartphone redefinido

smartphone android oneplus one

Análise ao Samsung Galaxy S5 – O que precisa de saber

samsung galaxy S5 em branco

Samsung Galaxy S5 vs iPhone 5S

iphone 5S e Samsung Galaxy S5

LG G2: A LG Regressa À Boa Forma

smartphone lg g2

BQ Aquaris 5 Dual SIM – O phablet da espanhola BQ

imagem do bq aquaris 5

Samsung Galaxy Note 3 – O phablet do momento

phablet samsung galaxy note 3

Sony Xperia Mini: Quando O Tamanho Não É Tudo

Sony Xperia Mini EM Branco

Sony Xperia L: Quando A Beleza Não é Tudo

smartphone sony xperia L