Calculadora de distância total com várias paradas
Uma viagem com várias paradas só está completa quando as ligações entre cada par consecutivo são conhecidas.
Executar grátis
Esta calculadora recebe a ordem exata de visita e um conjunto de distâncias entre pares, somando apenas os trechos usados. Ela apresenta um detalhamento verificável com o total e informa um erro claro quando falta uma conexão necessária. Os pares não têm direção, portanto uma distância funciona nos dois sentidos.
Informe o trajeto e as distâncias disponíveis
Comece pela lista de paradas, colocando cada local na ordem exata em que será visitado. Os espaços nas extremidades dos nomes são removidos, mas maiúsculas, minúsculas e espaços internos continuam relevantes; use rótulos consistentes. Uma parada pode aparecer novamente quando o trajeto retorna ao depósito ou revisita um lugar. Depois, forneça registros com origem, destino e distância. Cada registro descreve um par sem direção: a medida de Depósito para Museu também vale de Museu para Depósito. As distâncias precisam ser números finitos e não negativos, todas na unidade selecionada. A calculadora não converte unidades misturadas, pois um total formado por quilômetros e milhas seria enganoso. Pares extras são permitidos e ignorados quando não pertencem à sequência solicitada. Assim, você pode reutilizar uma tabela de distâncias e alterar somente o roteiro. Se o mesmo par aparecer com valores diferentes, a solicitação será recusada para não escolher silenciosamente entre dados conflitantes.
Entenda como o total do percurso é calculado
O cálculo percorre as paradas da esquerda para a direita e considera cada par adjacente uma única vez. Na sequência Depósito, Museu, Hotel e Depósito, os trechos necessários são Depósito–Museu, Museu–Hotel e Hotel–Depósito. O algoritmo procura cada par sem considerar o sentido, acrescenta a distância ao total acumulado e registra o trecho na saída. Ele nunca reorganiza a rota, insere um lugar não informado nem substitui uma ligação por um caminho indireto. Trata-se de uma soma sequencial, não de um mecanismo de otimização, portanto a ordem fornecida é sempre respeitada. Nomes idênticos em posições consecutivas geram um trecho de distância zero. O resultado inclui distância total, unidade, quantidade de paradas, quantidade de trechos e a lista ordenada usada na soma. Um ajuste estável de precisão reduz resíduos irrelevantes de ponto flutuante e preserva os decimais úteis. Como todos os valores incluídos aparecem, você pode conferir o total diretamente com a tabela de origem.
Resolva dados incompletos antes que causem problemas
Antes de apresentar qualquer total, a calculadora confirma que cada par consecutivo possui uma distância. Se Museu–Hotel estiver ausente, ela identifica esses nomes e rejeita a solicitação; nunca presume distância zero nem devolve uma soma parcial. Esse comportamento seguro ajuda em despachos, roteiros, reembolsos de quilometragem e planejamento de entregas, situações em que uma distância menor que a real afeta prazos e orçamentos. Inclua o par indicado e envie novamente: as mesmas entradas determinísticas sempre geram o mesmo resultado. A verificação cobre somente os trechos efetivamente usados, por isso não há problema se faltarem valores entre locais fora da sequência. Os dados podem vir de uma matriz rodoviária, planilha, segmentos medidos ou outra fonte confiável. A calculadora não consulta mapas e não verifica vias atuais, bloqueios, pedágios ou restrições de veículos. Confirme a qualidade e a atualidade da fonte sempre que decisões operacionais dependerem do percurso real.
Casos de uso
Conferir uma rota de entrega
Some os trechos conhecidos entre depósito e clientes na ordem de despacho e encontre qualquer conexão ausente antes da saída.
Totalizar um roteiro
Calcule a extensão de uma sequência planejada de atrações, hotéis e terminais usando uma tabela de distâncias preparada.
Auditar cálculos de quilometragem
Veja os trechos exatos incluídos para conferir um reembolso ou uma estimativa com os dados originais.
Perguntas frequentes
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A versão para navegador pode ser executada localmente sem chamada de rede.
A calculadora encontra a rota mais curta?
Não. Ela mantém a ordem de visita fornecida por você e soma os trechos consecutivos dessa sequência.
As distâncias entre pares têm direção?
Não. Uma distância informada de A para B também vale de B para A. Duplicatas com valores conflitantes são recusadas.
O que acontece quando falta um trecho?
A solicitação falha com um erro de entrada inválida que identifica as duas paradas consecutivas sem distância.
Posso misturar quilômetros e milhas?
Não. Todas as distâncias já devem usar a unidade selecionada. A capacidade identifica a unidade, mas não converte valores isolados.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/travel/route-stop-sequence-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"stops":["Depot","Museum","Hotel","Depot"],"distances":[{"from":"Depot","to":"Museum","distance":4.8},{"from":"Museum","to":"Hotel","distance":3.25},{"from":"Hotel","to":"Depot","distance":6.1}]}'const res = await fetch("https://api.kit.forhosting.com/travel/route-stop-sequence-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"stops": [
"Depot",
"Museum",
"Hotel",
"Depot"
],
"distances": [
{
"from": "Depot",
"to": "Museum",
"distance": 4.8
},
{
"from": "Museum",
"to": "Hotel",
"distance": 3.25
},
{
"from": "Hotel",
"to": "Depot",
"distance": 6.1
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel/route-stop-sequence-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"stops": [
"Depot",
"Museum",
"Hotel",
"Depot"
],
"distances": [
{
"from": "Depot",
"to": "Museum",
"distance": 4.8
},
{
"from": "Museum",
"to": "Hotel",
"distance": 3.25
},
{
"from": "Hotel",
"to": "Depot",
"distance": 6.1
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel/route-stop-sequence-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"stops":["Depot","Museum","Hotel","Depot"],"distances":[{"from":"Depot","to":"Museum","distance":4.8},{"from":"Museum","to":"Hotel","distance":3.25},{"from":"Hotel","to":"Depot","distance":6.1}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"stops":["Depot","Museum","Hotel","Depot"],"distances":[{"from":"Depot","to":"Museum","distance":4.8},{"from":"Museum","to":"Hotel","distance":3.25},{"from":"Hotel","to":"Depot","distance":6.1}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel/route-stop-sequence-distance", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"stops": [
"Depot",
"Museum",
"Hotel",
"Depot"
],
"distances": [
{
"from": "Depot",
"to": "Museum",
"distance": 4.8
},
{
"from": "Museum",
"to": "Hotel",
"distance": 3.25
},
{
"from": "Hotel",
"to": "Depot",
"distance": 6.1
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.route_stop_sequence_distance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_stops | 500 |
max_distances | 10000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |