Blog do TaQ

Convertendo coordenadas para decimais

Publicado em Developer

Estava fazendo uma aplicação aqui que usa os mapas do Google para indicar onde alguns veículos a venda estão estacionados, e o cliente informou as coordenadas utilizando graus, minutos e segundos da seguinte maneira: -20° 47' 26.37", -49° 21' 11.94"

O problema é a classe GLatLng espera valores decimais e não coordenadas, e eu procurei por toda a API do Google Maps, não encontrei nada para converter entre coordenadas e decimais e tive que botar a mão na massa, ou melhor, no código, que está apresentado abaixo.

Antes de mais nada temos que retirar as indicações de graus, minutos e segundos e transformar os valores das coordenadas em decimais simples do tipo -20.472637, -49.211194, e aí sim enviar para a função abaixo, onde eles se convertem em -20.790658, -49.353317, valores que podem ser enviados para a GLatLng.

 1 function coordToDec(coord){
 2    var match, sig, deg, min, sec, dec;
 3    match = /(-)?(\d+\.)(\d{2})(\d{2})(\d{2})/.exec(parseFloat(coord).toFixed(6));
 4    sig   = match[1] ? -1 : 1;
 5    deg   = Math.abs(parseFloat(match[2]));
 6    min   = parseFloat(match[3]);
 7    sec   = parseFloat(match[4]+"."+match[5]);
 8    dec   = (min+sec/60.0)/60.0;
 9    return ((deg+dec)*sig).toFixed(6);
10 }

Tags:


Comentários

comments powered by Disqus

Twitter