sexta-feira, 19 de fevereiro de 2010

Função em Delphi para Calcular a Distância Entre Dois Pares de Coordenadas (Latitude e Longitude)


Segue uma função para calcular a distância de dois pares de coordenadas em graus decimais, resultado é dado em quilômetros.
function calcDistancia(LatIni, LonIni, LatFim, LonFim: Extended): Extended;
var
 arcoA, arcoB, arcoC : Extended;
 auxPI : Extended;
begin
   auxPi := Pi / 180;

   arcoA := (LonFim - LonIni) * auxPi;
   arcoB := (90 - LatFim) * auxPi;
   arcoC := (90 - LatIni) * auxPi;

   // cos (a) = cos (b) . cos (c)  + sen (b) . sen (c) . cos (A)
   Result := Cos(arcoB) * Cos(arcoC) + Sin(arcoB) * Sin(arcoC) * Cos(arcoA);
   Result := (40030 * ((180 / Pi) * ArcCos(Result))) / 360;
end;

6 comentários :

  1. Só que essa função calcula em linha reta. Teria algo como no mapa da Google, onde se traça uma rota?

    ResponderExcluir
    Respostas
    1. Para calculo de rotas você depende da ferramenta de mapas.

      Excluir
  2. Boa noite sou iniciante tem como usar Edits para entrar com valores, label para exibir o resultado na tela, através de um botão cálcular como ficaria este pedaço de código. Obrigado

    ResponderExcluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir
    Respostas
    1. Sim, basta você colocar o nome do edit e usar a propriedade text (ex. xxx.text), converte-lo para extend e coloca-los no parametro das funções.

      Exemplo:

      StrToFloat(edit.text)

      Excluir
  4. Não é um comentário pode excluir depois de ler
    -------------------------------------------------
    Tenho algum material livros, dicas, códigos que fui coletando na internet C, delphi, Pascal, Pyton,e mais outros

    Se precisar de algum código ou livro que eu tenha para você colocar no seu blog ou estudar é só avisar, valeu.

    ResponderExcluir