Função para calcular distância entre duas coordenadas em JS

Neste artigo você vai aprender a como criar uma função para calcular distância entre duas coordenadas em JavaScript

calcular distância entre duas coordenadas capa capa

Fala programador(a), beleza? Bora aprender mais sobre JavaScript!

Ao desenvolver aplicativos baseados em localização, uma das tarefas mais comuns é calcular a distância entre duas coordenadas.

Em JavaScript, podemos escrever uma função simples para calcular a distância entre duas coordenadas usando a fórmula Haversine.

A fórmula Haversine é uma fórmula matemática que é usada para calcular a distância entre dois pontos em uma esfera.

A Terra é uma esfera aproximada, por isso podemos usar a fórmula Haversine para calcular a distância entre duas coordenadas na Terra.

Aqui está a função para calcular a distância entre duas coordenadas em JavaScript:

function distance(lat1, lon1, lat2, lon2, unit) {
  const radlat1 = Math.PI * lat1/180;
  const radlat2 = Math.PI * lat2/180;
  const radlon1 = Math.PI * lon1/180;
  const radlon2 = Math.PI * lon2/180;
  const theta = lon1-lon2;
  const radtheta = Math.PI * theta/180;
  let dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
  dist = Math.acos(dist);
  dist = dist * 180/Math.PI;
  dist = dist * 60 * 1.1515;
  if (unit === "K") { dist = dist * 1.609344 }
  if (unit === "N") { dist = dist * 0.8684 }
  return dist;
}
Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 116 aulas
  • 4 projetos
  • 9h 23min

Esta função recebe quatro argumentos – lat1, lon1, lat2 e lon2 – que representam as coordenadas de latitude e longitude dos dois pontos que desejamos medir a distância.

Também aceita um argumento opcional unit, que pode ser “K” para quilômetros ou “N” para milhas náuticas.

A função usa a fórmula Haversine para calcular a distância entre os dois pontos.

Os valores de latitude e longitude são convertidos em radianos e, em seguida, a distância entre os pontos é calculada usando a fórmula Haversine.

A distância resultante é convertida em milhas ou quilômetros, dependendo do valor de unidade fornecido.

Aqui está um exemplo de como usar a função para obter a distância entre duas coordenadas em JavaScript:

const distanceInKm = distance(52.5200, 13.4050, 48.8566, 2.3522, "K");
console.log(`A distância entre Berlim e Paris é de ${distanceInKm} km.`);

Neste exemplo, usamos a função distance() para calcular a distância entre Berlim e Paris em quilômetros.

O resultado é exibido no console.

Em resumo, a função para calcular a distância entre duas coordenadas em JavaScript usa a fórmula Haversine para calcular a distância entre dois pontos em uma esfera.

É uma função útil para desenvolvedores que trabalham com aplicativos baseados em localização e desejam medir a distância entre dois pontos geográficos.

Quer aprender mais sobre React? Confira o vídeo abaixo:

Conclusão

Em conclusão, a função para calcular a distância entre duas coordenadas em JavaScript é uma ferramenta útil para desenvolvedores que trabalham com aplicativos baseados em localização.

Usando a fórmula Haversine, podemos calcular a distância entre dois pontos na Terra usando suas coordenadas de latitude e longitude.

A função é fácil de implementar e pode ser personalizada para aceitar diferentes unidades de medida, como quilômetros ou milhas náuticas.

Com a função para obter a distância entre duas coordenadas em JavaScript, podemos fornecer recursos úteis para os usuários do nosso aplicativo, como a distância entre eles e outros pontos de interesse ou usuários próximos.

Também podemos usá-la para criar recursos que dependem da localização do usuário, como direções de condução ou navegação.

Em resumo, a função para calcular a distância entre duas coordenadas em JavaScript é uma ferramenta essencial para desenvolvedores de aplicativos baseados em localização.

Com a fórmula Haversine e algumas linhas de código JavaScript, podemos medir a distância entre dois pontos geográficos com precisão e facilidade.

Está buscando em evoluir como Programador? Confira o nossos cursos clicando aqui.

Nosso principal objetivo é tornar você um dev profissional que é capaz de resolver problemas de alta dificuldade e criar projetos complexos, através de uma metodologia planejada nos mínimos detalhes, após formar muitos outros desenvolvedores.

Cursos com vários projetos, exercícios, material apoio, comunidade de alunos e muito mais!

Pegando a localização atual do usuário:

Na maioria dos apps baseados em localização tu não sabe a coordenada do usuário de antemão, ela vem do navegador

Pra isso existe a API de Geolocation, built-in no browser, sem instalar nada

navigator.geolocation.getCurrentPosition((pos) => { const lat = pos.coords.latitude; const lon = pos.coords.longitude; const km = distance(lat, lon, 48.8566, 2.3522, ‘K’); console.log(Você está a ${km} km de Paris); }, (erro) => { console.log(‘Não deu pra pegar a localização’, erro); });

Se liga nisso: o navegador vai pedir permissão pro usuário, então sempre trata o caso dele negar (o segundo callback ali em cima)

Outra pegadinha: a Geolocation só funciona em HTTPS ou em localhost, se tu testar em http puro o browser bloqueia e tu fica quebrando a cabeça sem entender

Com isso tu junta a coordenada real do usuário com qualquer ponto de interesse e joga a distância na tela, que é o uso mais comum dessa função

Só pra deixar claro de onde vieram esses números do exemplo: 48.8566, 2.3522 é a latitude e a longitude de Paris, e 52.5200, 13.4050 é Berlim

A ordem importa: a função espera latitude primeiro, longitude depois

É fácil trocar sem querer e achar que a fórmula está errada, quando na verdade tu inverteu os argumentos

Perguntas frequentes:

Qual unidade a função retorna por padrão?

Se tu não passar o argumento unit, ela retorna em milhas

Passa ‘K’ pra ter o resultado em quilômetros e ‘N’ pra milhas náuticas, como no exemplo

Como calcular a distância em metros?

Pega o resultado em quilômetros (unit ‘K’) e multiplica por 1000

Algo tipo const metros = distance(lat1, lon1, lat2, lon2, ‘K’) * 1000

A fórmula Haversine é precisa?

É uma ótima aproximação pra maioria dos casos do dia a dia

Como ela assume a Terra como uma esfera perfeita (e ela não é bem assim, é meio achatada), aparece um errinho pequeno em distâncias grandes, mas pra app de localização normal isso não te atrapalha

Dá pra usar em React, Node ou Vue?

Dá sim, é JavaScript puro, só usa o objeto Math que já existe em qualquer ambiente

É só copiar a função e chamar onde tu precisar

Leia também

Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares