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.
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.
Na sequência crie um novo documento JavaScript e insira o código abaixo:
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