API Routes (Calcolo percorsi in batch)

Usa Routes per calcolare più percorsi in una singola richiesta. REST restituisce JSON, mentre SOAP usa CalculateRoutes per flussi di calcolo percorsi in batch e integrazioni legacy.

Illustrazione dell’API Routes di TrackRoad che calcola più percorsi in una singola richiesta e restituisce distanze e tempi.
Routes calcola più percorsi in una sola chiamata, rendendola utile per la pianificazione massiva dei percorsi, il confronto dei percorsi e i flussi di lavoro di routing batch.

Hai bisogno del contratto API completo?

Swagger copre i modelli REST, mentre il WSDL SOAP supporta le integrazioni legacy TrackService.

Apri Swagger UI Apri SOAP WSDL Panoramica del riferimento API

Indice dei contenuti

  1. Cosa fa Routes
  2. Endpoint e URL di base
  3. Autenticazione (REST e SOAP)
  4. Schema della richiesta
  5. Schema della risposta
  6. Esempi
  7. Errori comuni
  8. Best practice
  9. Endpoint correlati
  10. FAQ

Cosa fa Routes#

Routes calcola uno o più percorsi in una singola richiesta. Questo lo rende utile quando hai bisogno del calcolo percorsi in batch invece di inviare molte chiamate per un singolo percorso.

Ogni percorso usa un elenco ordinato di input Location e RouteOptions opzionali. Puoi anche definire un oggetto globale RoutesOptions che applica i valori predefiniti all’intera richiesta.

Suggerimento: Se ti serve un solo percorso, usa API Route . Se devi calcolare più percorsi contemporaneamente, usa Routes.

Endpoint e URL di base#

REST (JSON)

Elemento Valore
URL di base https://trackservice.trackroad.com
Endpoint POST /rest/routes
URL completo https://trackservice.trackroad.com/rest/routes
Content-Type application/json

SOAP (CalculateRoutes)

Elemento Valore
URL SOAP https://trackservice.trackroad.com/TrackService.asmx
WSDL https://trackservice.trackroad.com/TrackService.asmx?WSDL
Metodo CalculateRoutes
SOAPAction http://TrackService.TrackRoad.com/CalculateRoutes
Content-Type text/xml; charset=utf-8

SOAP e REST condividono gli stessi concetti fondamentali di routing, come RouteSpecification, RouteOptions e Location. La differenza principale è il trasporto: JSON per REST e busta SOAP + SessionIDHeader per SOAP.

Autenticazione (REST e SOAP)#

Autenticazione REST (X-API-Key)

Includi il tuo TrackServiceKey nell’header X-API-Key per ogni richiesta REST. Vedi Autenticazione API .

Autenticazione SOAP (SessionIDHeader)

Le richieste SOAP usano SessionIDHeader. Invia il tuo TrackServiceKey come SessionID per ogni chiamata CalculateRoutes.

Consigliato: usa REST a meno che tu non debba integrare un sistema aziendale esistente solo SOAP o legacy.

Schema della richiesta#

Il body della richiesta REST è un singolo oggetto batch: RoutesSpecification, che contiene un elenco di elementi RouteSpecification. SOAP usa la stessa struttura logica all’interno dell’operazione CalculateRoutes.

Modelli condivisi

Location, LatLong e Address sono condivisi tra più endpoint. Vedi API Dispatch (modelli condivisi) .

RoutesSpecification (REST)

Proprietà Tipo Obbligatorio Descrizione
Specifications RouteSpecification[] Sì* Un elemento per ogni percorso che vuoi calcolare nella richiesta batch.
RoutesOptions RouteOptions No Valori predefiniti globali applicati a ogni percorso, salvo override tramite RouteOptions per percorso.

RouteSpecification

Proprietà Tipo Obbligatorio Descrizione
Locations Location[] Sì* Fermate di questo percorso. L’ordine può essere ottimizzato in base alle RouteOptions.
RouteOptions RouteOptions No Override per singolo percorso per motore di routing, unità, modalità di ottimizzazione, lingua/cultura e opzioni mappa.

RouteOptions (riepilogo)

I campi RouteOptions come RoutingService, DistanceUnit, RouteOptimize, Culture e le impostazioni relative alla mappa sono simili all’endpoint Route e possono essere applicati globalmente o per singolo percorso.

Schema della risposta#

Risposta REST (RoutesResult)

Proprietà Tipo Descrizione
Results RouteResult[] Un risultato per ogni RouteSpecification in input.
Map string Output mappa opzionale in base alle opzioni. Può essere vuoto.
Errors Error[] Avvisi ed errori opzionali restituiti dal servizio.
Status int (enum) 0=None, 1=Success, 2=Failed, 3=SuccessWithErrors.

Risposta SOAP (CalculateRoutesResult)

SOAP incapsula la stessa struttura logica del risultato all’interno di CalculateRoutesResponse e CalculateRoutesResult.

Esempi#

Usa gli esempi qui sotto per capire come funziona TrackRoad Routes con REST JSON e SOAP CalculateRoutes. I blocchi di codice di esempio devono rimanere invariati tra le lingue.

REST request body (JSON)#

{
  "Locations": [
    { "Name": "Start", "LatLong": { "Latitude": 37.7946, "Longitude": -122.3950 }, "LocationType": 1 },
    { "Name": "Stop A", "LatLong": { "Latitude": 37.7897, "Longitude": -122.4011 }, "LocationType": 0 },
    { "Name": "Finish", "LatLong": { "Latitude": 37.7810, "Longitude": -122.4110 }, "LocationType": 2 }
  ],
  "RouteOptions": {
    "RoutingService": 2,
    "DistanceUnit": 0,
    "RouteOptimize": 0,
    "Culture": "en-US",
    "ZoomLevel": 0
  }
}

REST call examples#

curl -X POST "https://trackservice.trackroad.com/rest/Route" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_TRACKSERVICEKEY" \
  -d @route-request.json

SOAP request (CalculateRoute)#

SOAP requires SessionIDHeader. Replace YOUR_SESSION_ID with the session id returned from SOAP Login.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <SessionIDHeader xmlns="http://TrackService.TrackRoad.com/">
      <SessionID>YOUR_SESSION_ID</SessionID>
    </SessionIDHeader>
  </soap:Header>

  <soap:Body>
    <CalculateRoute xmlns="http://TrackService.TrackRoad.com/">
      <specification>
        <Locations>
          <Location>
            <Name>Start</Name>
            <LatLong><Latitude>37.7946</Latitude><Longitude>-122.3950</Longitude></LatLong>
            <LocationType>Start</LocationType>
          </Location>

          <Location>
            <Name>Stop A</Name>
            <LatLong><Latitude>37.7897</Latitude><Longitude>-122.4011</Longitude></LatLong>
            <LocationType>Midway</LocationType>
          </Location>

          <Location>
            <Name>Finish</Name>
            <LatLong><Latitude>37.7810</Latitude><Longitude>-122.4110</Longitude></LatLong>
            <LocationType>Finish</LocationType>
          </Location>
        </Locations>

        <RouteOptions>
          <RoutingService>Bing</RoutingService>
          <DistanceUnit>Mile</DistanceUnit>
          <RouteOptimize>MinimizeTime</RouteOptimize>
          <Culture>en-US</Culture>
          <ZoomLevel>0</ZoomLevel>
        </RouteOptions>
      </specification>
    </CalculateRoute>
  </soap:Body>
</soap:Envelope>

SOAP call examples#

curl -X POST "https://trackservice.trackroad.com/TrackService.asmx" \
  -H "Content-Type: text/xml; charset=utf-8" \
  -H "SOAPAction: http://TrackService.TrackRoad.com/CalculateRoute" \
  -d @calculate-route.xml

Response example (REST JSON)#

{
  "Route": {
    "Distance": 5.42,
    "Time": 1180,
    "RouteLegs": [
      {
        "Distance": 2.10,
        "Time": 480,
        "Itinerary": {
          "Items": [
            {
              "Distance": 0.2,
              "Time": 40,
              "Text": "Head north on ...",
              "LatLong": { "Latitude": 37.79, "Longitude": -122.39 }
            }
          ]
        }
      }
    ],
    "Points": [
      { "Latitude": 37.7946, "Longitude": -122.3950 },
      { "Latitude": 37.7897, "Longitude": -122.4011 }
    ],
    "Map": null
  },
  "Errors": [],
  "Status": 1
}

Errori comuni#

  • REST 401 / Unauthorized: X-API-Key mancante o non valido.
  • REST 403 / Forbidden: la chiave è valida ma bloccata, scaduta o senza credito disponibile.
  • Errore di autenticazione SOAP: SessionIDHeader mancante o non valido. SessionID deve essere il tuo TrackServiceKey.
  • Errori di validazione: Locations mancanti, coordinate non valide o valori enum non validi.

Best practice#

  • Raggruppa in modo intelligente: inserisci più calcoli di percorso in una sola chiamata Routes per ridurre l’overhead delle richieste.
  • Preferisci LatLong: fornisci coordinate quando possibile per ridurre l’ambiguità del geocoding e migliorare le prestazioni.
  • Usa RoutesOptions globali: imposta una sola volta i valori condivisi e fai override solo quando necessario per il singolo percorso.
  • Mantieni opzioni coerenti: mescolare motori di routing, unità o modalità di ottimizzazione tra percorsi può rendere più difficile il confronto.

FAQ#

Cosa fa l’API Routes?
L’API Routes calcola uno o più percorsi in una singola richiesta. Ogni risultato può includere località ordinate, distanza, tempo e un output mappa opzionale in base alle opzioni.
Come mi autentico su Routes (REST e SOAP)?
Le richieste REST inviano il TrackServiceKey nell’header X-API-Key. Le richieste SOAP CalculateRoutes inviano il TrackServiceKey nel SessionIDHeader come SessionID.
Quando dovrei usare Routes invece di Route?
Usa Route quando devi calcolare un singolo percorso. Usa Routes quando vuoi calcolare più percorsi in una singola richiesta batch.
Quali sono gli errori più comuni dell’API Routes?
Gli errori comuni includono un X-API-Key mancante o non valido, errori di autenticazione SOAP con SessionIDHeader, Locations mancanti, coordinate non valide e valori enum non validi.

Passaggio successivo: ottimizzare tra più veicoli

Se devi assegnare fermate a più veicoli e ottimizzare l’ordine delle fermate per veicolo, continua con l’API Dispatch.

Vai a Dispatch Swagger UI