Gesamtstrecke einer Route mit mehreren Stopps berechnen
Eine Fahrt mit mehreren Stopps ist nur vollständig, wenn die Verbindungen zwischen allen aufeinanderfolgenden Orten bekannt sind.
Im Browser ausführen – kostenlos
Dieser Rechner übernimmt die genaue Besuchsreihenfolge und eine Tabelle paarweiser Entfernungen und addiert ausschließlich die tatsächlich benötigten Abschnitte. Er liefert eine prüfbare Aufschlüsselung samt Gesamtsumme und meldet klar, wenn eine notwendige Verbindung fehlt. Paare sind ungerichtet, sodass ein Wert für beide Fahrtrichtungen gilt.
Beschreiben Sie die Route und bekannte Entfernungen
Beginnen Sie mit der Stoppliste und tragen Sie jeden Ort in der genauen Besuchsreihenfolge ein. Leerzeichen an den Rändern eines Namens werden entfernt; Groß- und Kleinschreibung sowie innere Abstände bleiben jedoch bedeutsam. Verwenden Sie deshalb einheitliche Bezeichnungen. Ein Stopp darf mehrfach vorkommen, wenn die Route zum Depot zurückkehrt oder einen Ort erneut anfährt. Geben Sie anschließend Datensätze mit Start, Ziel und Entfernung an. Jeder Eintrag beschreibt ein ungerichtetes Paar: Depot–Museum gilt ebenso für Museum–Depot. Sämtliche Entfernungen müssen endliche, nicht negative Zahlen in der ausgewählten Einheit sein. Gemischte Einheiten werden nicht umgerechnet, da eine Summe aus Kilometern und Meilen irreführend wäre. Zusätzliche Paare sind erlaubt und werden ignoriert, sofern die Route sie nicht nutzt. So können Sie eine umfangreiche Entfernungstabelle wiederverwenden und nur die Reihenfolge ändern. Enthält dasselbe Paar unterschiedliche Werte, wird die Anfrage abgelehnt, statt einen widersprüchlichen Wert stillschweigend auszuwählen.
So wird die Gesamtstrecke berechnet
Die Berechnung durchläuft die Stopps von links nach rechts und berücksichtigt jedes benachbarte Paar genau einmal. Bei Depot, Museum, Hotel und Depot werden Depot–Museum, Museum–Hotel und Hotel–Depot benötigt. Der Algorithmus sucht jedes Paar unabhängig von der Richtung, addiert dessen Entfernung zur laufenden Summe und nimmt den Abschnitt in die Ausgabe auf. Er sortiert die Orte niemals neu, fügt keinen unbekannten Ort ein und ersetzt keine Verbindung durch einen Umweg. Es handelt sich um eine Sequenzsumme und nicht um eine Routenoptimierung; Ihre vorgegebene Reihenfolge bleibt maßgeblich. Zwei unmittelbar aufeinanderfolgende gleiche Namen ergeben einen Abschnitt mit der Entfernung null. Das Ergebnis enthält Gesamtstrecke, Einheit, Anzahl der Stopps, Anzahl der Abschnitte und deren geordnete Liste. Eine stabile Präzisionsbegrenzung entfernt unbedeutende Gleitkommareste, ohne nützliche Dezimalstellen zu verlieren. Da jeder einbezogene Wert sichtbar ist, können Sie die Summe direkt mit der Ursprungstabelle vergleichen.
Beheben Sie unvollständige Daten rechtzeitig
Vor jeder Ausgabe prüft der Rechner, ob für alle aufeinanderfolgenden Paare eine Entfernung vorliegt. Fehlt Museum–Hotel, nennt er beide Stopps und weist die Anfrage zurück; er setzt die Entfernung weder auf null noch liefert er eine Teilsumme. Dieses sichere Verhalten eignet sich für Disposition, Reisepläne, Fahrtkostenerstattung und Lieferplanung, bei denen eine zu geringe Entfernung Zeitpläne oder Budgets verfälschen kann. Ergänzen Sie das genannte Paar und senden Sie die Daten erneut. Identische deterministische Eingaben liefern stets dasselbe Ergebnis. Die Prüfung betrifft nur tatsächlich verwendete Abschnitte, sodass fehlende Werte zwischen unbeteiligten Orten keine Rolle spielen. Entfernungen können aus einer Straßenmatrix, einer Planungstabelle, vermessenen Teilstrecken oder einer anderen verlässlichen Quelle stammen. Der Rechner fragt keinen Kartendienst ab und kennt keine aktuellen Sperrungen, Mautregeln oder Fahrzeugbeschränkungen. Prüfen Sie die Quelldaten gesondert, wenn reale Betriebsentscheidungen davon abhängen.
Anwendungsfälle
Eine Liefertour prüfen
Addieren Sie bekannte Abschnitte zwischen Depot und Kunden in Einsatzreihenfolge und erkennen Sie fehlende Verbindungen vor der Abfahrt.
Einen Reiseplan summieren
Berechnen Sie die Länge einer geplanten Folge aus Sehenswürdigkeiten, Hotels und Verkehrsknoten anhand einer vorbereiteten Tabelle.
Kilometerabrechnungen prüfen
Lassen Sie die berücksichtigten Abschnitte anzeigen, um Erstattungen oder Planwerte mit den Quelldaten abzugleichen.
Häufige Fragen
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Die Browserversion kann lokal ohne Netzwerkanfrage ausgeführt werden.
Ermittelt der Rechner die kürzeste Route?
Nein. Er behält die von Ihnen angegebene Besuchsreihenfolge bei und summiert deren aufeinanderfolgende Abschnitte.
Sind paarweise Entfernungen richtungsabhängig?
Nein. Ein Wert von A nach B gilt auch von B nach A. Widersprüchliche Doppeleinträge werden abgelehnt.
Was geschieht bei einem fehlenden Abschnitt?
Die Anfrage endet mit einem Eingabefehler, der die beiden aufeinanderfolgenden Stopps ohne Entfernung nennt.
Darf ich Kilometer und Meilen mischen?
Nein. Alle Werte müssen bereits dieselbe ausgewählte Einheit verwenden. Der Rechner kennzeichnet sie, rechnet sie aber nicht um.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"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
}
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.route_stop_sequence_distance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_stops | 500 |
max_distances | 10000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |