Calcular km entre dois pontos usando latitude e longitude

Existem algumas APIs que te dão a opção de realizar o cálculo de quilometragem entre dois locais utilizando latitude e longitude, porém, praticamente todos são pagas e dependendo da aplicação se torna inviável obter uma licença de utilização desses APIs.

Existe um jeito de realizar esse cálculo utilizando trigonometria que pode te ajudar nessas situações:

O método que iremos aplicar está disponível no site:
Distância entre Locais ( Latitude e Longitude) - Acadêmicos do Excel

Vamos lá.

O primeiro passo é criar um formulário com os campos abaixo:

  • lttd01 - Latitude do primeiro local
  • lgtd01 - Longitude do primeiro local
  • lttd02 - Latitude do segundo local
  • lgtd02 - Longitude do segundo local
  • KM - Local onde iremos retornar o cálculo de quilometragem.

05311551-1

Após realizarmos a postagem do formulário da LATROMI web, nosso formulário ficará da seguinte forma, para melhorar o formulário você pode alterar os nomes dos campos como preferir.

05311551-2

Na sequência crie um novo documento JavaScript e insira o código abaixo:

05311551-3

function calculoKm(lgtd02) {
    latromi.formManager.setOnFormCreatedCallback(function (context) {
        var form = context.form;

        // Mapear o campos para poder criar eventos
        var clientId = context.form.fields[lgtd02].clientId;
        var input = document.querySelector('#' + clientId);
        if (!input) return;

        input.addEventListener('blur', function (e) {
            latitude1 = form.getFieldValue('lttd01');
            longitude1 = form.getFieldValue('lgtd01');
            latitude2 = form.getFieldValue('lttd02');
            longitude2 = form.getFieldValue('lgtd02');


            // Inicio dos calculos 1° parte
            var p1 = Math.cos((90 - latitude1) * (Math.PI / 180));
            // Inicio dos calculos 2° parte
            var p2 = Math.cos((90 - latitude2) * (Math.PI / 180));
            // Inicio dos calculos 3° parte
            var p3 = Math.sin((90 - latitude1) * (Math.PI / 180));
            // Inicio dos calculos 4° parte
            var p4 = Math.sin((90 - latitude2) * (Math.PI / 180));
            // Inicio dos calculos 5° parte
            var p5 = Math.cos((longitude1 - longitude2) * (Math.PI / 180));

            var KM = ((Math.acos((p1 * p2) + (p3 * p4 * p5)) * 6371) * 1.15);

            if ('KM') form.setFieldValue('KM', KM);

        });
    });
}
calculoKm('lgtd02');

Salve o documento JavaScript e o Formulário, se tudo estiver correto após inserir o ultimo valor de longitude a quilometragem aparecera automaticamente.

Observação Importante: Antes de utilizar essa funcionalidade leia o conteúdo do site que utilizei como referencia, pois, esse calculo é uma forma matemática de se calcular distancia entre pois pontos.
Logo o numero não será tão preciso quanto o valor retirado de uma API.

Ate a próxima :+1:t5:

2 Curtidas

Muito obrigado pela colaboração @Framos!!