Calculadora de distancia total con varias paradas
Un trayecto con varias paradas solo está completo si se conocen los enlaces entre cada par de paradas consecutivas.
Ejecutar — gratis
Esta calculadora recibe el orden exacto de visita y un conjunto de distancias entre pares, y suma únicamente los tramos utilizados. Devuelve un desglose verificable junto con el total y genera un error claro si falta una conexión necesaria. Los pares no tienen dirección, por lo que una distancia sirve para ambos sentidos.
Describa el recorrido y las distancias disponibles
Comience con el arreglo de paradas y enumere cada lugar en el orden exacto de visita. Se eliminan los espacios exteriores de los nombres, pero las mayúsculas y los espacios internos siguen siendo significativos; por ello, utilice etiquetas coherentes. Una parada puede repetirse si el recorrido vuelve al depósito o visita de nuevo un lugar. Después, facilite registros con origen, destino y distancia. Cada registro representa un par sin dirección: la distancia de Depósito a Museo también sirve de Museo a Depósito. Las distancias deben ser números finitos y no negativos, todas expresadas en la unidad seleccionada. La calculadora no mezcla ni convierte unidades, ya que sumar kilómetros y millas produciría un resultado engañoso. Puede incluir pares adicionales; se ignorarán si el recorrido no los utiliza. Así puede reutilizar una tabla de distancias y cambiar solamente la secuencia. Si un mismo par aparece con valores distintos, la solicitud se rechaza para no ocultar datos contradictorios.
Comprenda cómo se obtiene la distancia total
El cálculo recorre la lista de izquierda a derecha y considera una sola vez cada par adyacente. Para Depósito, Museo, Hotel y Depósito, los tramos necesarios son Depósito–Museo, Museo–Hotel y Hotel–Depósito. El algoritmo busca cada par sin tener en cuenta el sentido, añade su distancia al total acumulado y registra el tramo en la salida. Nunca reorganiza las paradas, introduce lugares nuevos ni sustituye un enlace por un camino indirecto. Es una suma de secuencia, no un optimizador de rutas, por lo que el orden facilitado siempre prevalece. Dos nombres iguales y consecutivos generan un tramo de distancia cero. El resultado contiene la distancia total, la unidad, el número de paradas, el número de tramos y la lista ordenada utilizada. Un ajuste estable de precisión evita residuos insignificantes de coma flotante sin perder decimales útiles. Como se muestran todos los valores incluidos, puede auditar el total directamente frente a la tabla original.
Detecte datos incompletos antes de que causen problemas
Antes de devolver el total, la calculadora comprueba que exista una distancia para cada par consecutivo. Si falta Museo–Hotel, identifica ambos nombres y rechaza la solicitud; nunca asigna cero ni entrega una suma parcial. Este comportamiento preventivo resulta útil para despachos, itinerarios, reembolsos de kilometraje y planificación de repartos, donde una distancia inferior a la real altera horarios y presupuestos. Añada el par indicado y vuelva a enviar los mismos datos para obtener siempre el mismo resultado determinista. La validación solo afecta a los tramos usados, de modo que no importa que falten distancias entre lugares ajenos a la secuencia. Los valores pueden proceder de una matriz vial, una hoja de planificación, segmentos medidos o cualquier fuente fiable. La calculadora no consulta mapas ni sabe si existen cierres, peajes o restricciones para vehículos. Verifique la vigencia de la fuente cuando el resultado sirva para decisiones operativas reales.
Qué puede hacer con ella
Comprobar una ruta de reparto
Sume los tramos conocidos entre el depósito y los clientes en el orden de despacho, y detecte conexiones ausentes antes de la salida.
Totalizar un itinerario
Calcule la longitud de una secuencia prevista de atracciones, hoteles y centros de transporte mediante una tabla preparada.
Auditar cálculos de kilometraje
Obtenga los tramos exactos incluidos para contrastar un reembolso o una previsión con las distancias de origen.
Preguntas frecuentes
¿Cuánto cuesta una solicitud API?
Cada solicitud API cuesta $0.002. La versión del navegador puede ejecutarse localmente sin realizar una llamada de red.
¿La calculadora encuentra la ruta más corta?
No. Conserva el orden de visita que usted facilita y suma los tramos consecutivos de esa secuencia.
¿Las distancias entre pares tienen dirección?
No. Una distancia indicada de A a B también se utiliza de B a A. Los valores duplicados y contradictorios se rechazan.
¿Qué sucede si falta un tramo?
La solicitud falla con un error de entrada no válida que identifica las dos paradas consecutivas sin distancia.
¿Puedo mezclar kilómetros y millas?
No. Todas las distancias deben usar previamente la unidad seleccionada. La capacidad etiqueta el resultado, pero no convierte valores individuales.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"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
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.route_stop_sequence_distance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_stops | 500 |
max_distances | 10000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |