Calculateur de distance totale d’un itinéraire multi-étapes
Un trajet à plusieurs étapes n’est complet que si les liaisons entre chaque paire successive sont connues.
Lancer gratuitement
Ce calculateur reçoit l’ordre exact des visites et un ensemble de distances par paire, puis additionne uniquement les tronçons empruntés. Il fournit le détail vérifiable avec le total et signale clairement toute liaison nécessaire absente. Les paires ne sont pas orientées : une distance convient donc aux deux sens.
Décrivez le trajet et les distances disponibles
Commencez par le tableau des étapes, en indiquant chaque lieu dans son ordre exact de visite. Les espaces situés aux extrémités des noms sont supprimés, mais la casse et les espaces intérieurs restent significatifs ; employez donc des libellés cohérents. Une étape peut apparaître plusieurs fois si le trajet revient au dépôt ou repasse par un lieu. Fournissez ensuite des enregistrements comprenant le départ, l’arrivée et la distance. Chaque enregistrement représente une paire non orientée : la valeur Dépôt–Musée convient également à Musée–Dépôt. Les distances doivent être des nombres finis et positifs ou nuls, toutes dans l’unité sélectionnée. Le calculateur ne convertit pas des unités mélangées, car un total combinant kilomètres et miles serait trompeur. Les paires supplémentaires sont acceptées et ignorées si l’itinéraire ne les utilise pas. Vous pouvez ainsi réemployer une table complète en modifiant seulement la séquence. Si une même paire porte plusieurs valeurs différentes, la requête est refusée afin de ne pas masquer cette contradiction.
Comprenez le calcul de la distance totale
Le calcul parcourt les étapes de gauche à droite et traite une seule fois chaque paire adjacente. Pour Dépôt, Musée, Hôtel puis Dépôt, il utilise Dépôt–Musée, Musée–Hôtel et Hôtel–Dépôt. L’algorithme recherche chaque paire indépendamment du sens, ajoute sa distance au cumul et inscrit le tronçon dans le résultat. Il ne réordonne jamais les lieux, n’ajoute aucune étape et ne remplace pas une liaison par un détour. Il s’agit d’un total selon une séquence, et non d’une optimisation ; l’ordre transmis demeure donc déterminant. Deux noms identiques consécutifs produisent un tronçon nul. Le résultat présente la distance totale, l’unité, le nombre d’étapes, le nombre de tronçons et leur liste ordonnée. Un réglage stable de précision élimine les résidus numériques insignifiants tout en conservant les décimales utiles. Chaque valeur retenue étant visible, vous pouvez contrôler le total directement par rapport à la table source.
Corrigez les données incomplètes avant leur utilisation
Avant de renvoyer un total, le calculateur vérifie qu’une distance existe pour chaque paire successive. Si Musée–Hôtel manque, il nomme ces deux étapes et refuse la requête ; il ne remplace jamais la valeur par zéro et ne fournit pas de total partiel. Ce fonctionnement prudent convient aux tournées, aux itinéraires, aux remboursements kilométriques et à la planification des livraisons, où une distance sous-estimée fausse horaires et budgets. Ajoutez la paire indiquée puis relancez le calcul : des entrées identiques produisent toujours le même résultat déterministe. Le contrôle ne porte que sur les tronçons réellement utilisés ; l’absence de distances entre des lieux étrangers à la séquence est sans effet. Les valeurs peuvent provenir d’une matrice routière, d’une feuille de calcul, de segments mesurés ou d’une autre source fiable. Le service ne consulte aucune carte et ignore fermetures, péages ou restrictions. Vérifiez séparément l’actualité des données pour toute décision opérationnelle.
Cas d’usage
Contrôler une tournée de livraison
Additionnez les tronçons connus entre dépôt et clients dans l’ordre prévu, et repérez une liaison absente avant le départ.
Totaliser un programme de voyage
Calculez la longueur d’une suite d’attractions, d’hôtels et de pôles de transport à partir d’une table préparée.
Auditer un calcul kilométrique
Obtenez les tronçons exacts du total afin de vérifier un remboursement ou une estimation face aux données sources.
Questions fréquentes
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. La version pour navigateur peut s’exécuter localement sans appel réseau.
Le calculateur trouve-t-il l’itinéraire le plus court ?
Non. Il conserve l’ordre de visite que vous fournissez et additionne les tronçons successifs de cette séquence.
Les distances par paire sont-elles orientées ?
Non. Une distance de A vers B est aussi utilisée de B vers A. Les doublons contradictoires sont refusés.
Que se passe-t-il lorsqu’un tronçon manque ?
La requête échoue avec une erreur d’entrée non valide qui nomme les deux étapes successives concernées.
Puis-je mélanger kilomètres et miles ?
Non. Toutes les distances doivent déjà employer l’unité sélectionnée. Le résultat affiche l’unité, sans convertir les valeurs.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"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
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.route_stop_sequence_distance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_stops | 500 |
max_distances | 10000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |