API de Rotas (Cálculo de Rotas em Lote)

Utilize Routes para calcular várias rotas num único pedido. O REST devolve JSON, enquanto o SOAP utiliza CalculateRoutes para fluxos de cálculo de rotas em lote e integrações legadas.

Ilustração da API de Rotas do TrackRoad a calcular várias rotas num único pedido e a devolver distâncias e tempos.
Routes calcula várias rotas numa única chamada, tornando-se útil para planeamento de rotas em massa, comparação de rotas e fluxos de encaminhamento em lote.

Precisa do contrato completo da API?

O Swagger cobre os modelos REST, enquanto o WSDL SOAP suporta integrações TrackService legadas.

Ver Swagger UI Ver WSDL SOAP Visão geral da referência da API

Índice

  1. O que o Routes faz
  2. Endpoints e URLs base
  3. Autenticação (REST & SOAP)
  4. Esquema do pedido
  5. Esquema da resposta
  6. Exemplos
  7. Erros comuns
  8. Boas práticas
  9. Endpoints relacionados
  10. Perguntas frequentes

O que o Routes faz#

Routes calcula uma ou várias rotas num único pedido. Isto é útil quando precisa de cálculo de rotas em lote em vez de enviar muitas chamadas de rota única.

Cada rota utiliza uma lista ordenada de entradas Location e RouteOptions opcionais. Também pode definir um objeto global RoutesOptions que aplica valores por defeito a todo o pedido.

Dica: Se precisar apenas de uma rota, utilize API de Route . Se precisar de calcular várias rotas ao mesmo tempo, utilize Routes.

Endpoints e URLs base#

REST (JSON)

Item Valor
URL base https://trackservice.trackroad.com
Endpoint POST /rest/routes
URL completa https://trackservice.trackroad.com/rest/routes
Content-Type application/json

SOAP (CalculateRoutes)

Item Valor
URL SOAP https://trackservice.trackroad.com/TrackService.asmx
WSDL https://trackservice.trackroad.com/TrackService.asmx?WSDL
Método CalculateRoutes
SOAPAction http://TrackService.TrackRoad.com/CalculateRoutes
Content-Type text/xml; charset=utf-8

SOAP e REST partilham os mesmos conceitos centrais de encaminhamento, como RouteSpecification, RouteOptions e Location. A principal diferença é o transporte: JSON para REST e envelope SOAP + SessionIDHeader para SOAP.

Autenticação (REST & SOAP)#

Autenticação REST (X-API-Key)

Inclua a sua TrackServiceKey no cabeçalho X-API-Key em todos os pedidos REST. Consulte Autenticação da API .

Autenticação SOAP (SessionIDHeader)

Os pedidos SOAP utilizam SessionIDHeader. Envie a sua TrackServiceKey como SessionID em cada chamada CalculateRoutes.

Recomendado: utilize REST, exceto se precisar de integrar com um sistema empresarial existente apenas com SOAP ou legado.

Esquema do pedido#

Modelos partilhados

Location, LatLong e Address são partilhados entre endpoints. Consulte API de Dispatch (modelos partilhados) .

RoutesSpecification (REST)

Propriedade Tipo Obrigatório Descrição
Specifications RouteSpecification[] Sim* Um item por cada rota que pretende calcular no pedido em lote.
RoutesOptions RouteOptions Não Valores globais por defeito aplicados a todas as rotas, salvo substituição por RouteOptions específicas por rota.

RouteSpecification

Propriedade Tipo Obrigatório Descrição
Locations Location[] Sim* Paragens desta rota. A ordem pode ser otimizada com base em RouteOptions.
RouteOptions RouteOptions Não Substituições por rota para motor de encaminhamento, unidades, modo de otimização, cultura e opções de mapa.

RouteOptions (resumo)

Os campos RouteOptions, como RoutingService, DistanceUnit, RouteOptimize, Culture e definições relacionadas com mapas, são semelhantes ao endpoint Route e podem ser aplicados globalmente ou por rota.

Esquema da resposta#

Resposta REST (RoutesResult)

Propriedade Tipo Descrição
Results RouteResult[] Um resultado por cada RouteSpecification de entrada.
Map string Saída de mapa opcional, dependendo das opções. Pode estar vazia.
Errors Error[] Avisos e erros opcionais devolvidos pelo serviço.
Status int (enum) 0=None, 1=Success, 2=Failed, 3=SuccessWithErrors.

Resposta SOAP (CalculateRoutesResult)

Exemplos#

Utilize os exemplos abaixo para compreender como o TrackRoad Routes funciona com REST JSON e SOAP CalculateRoutes. Os blocos de código de exemplo devem permanecer inalterados entre linguagens.

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
}

Erros comuns#

  • REST 403 / Forbidden: A chave é válida, mas está bloqueada, expirada ou sem crédito disponível.
  • Erros de validação: Locations em falta, coordenadas inválidas ou valores de enum inválidos.

Boas práticas#

  • Faça lotes de forma inteligente: Coloque vários cálculos de rota numa chamada Routes para reduzir a sobrecarga de pedidos.
  • Prefira LatLong: Forneça coordenadas sempre que possível para reduzir ambiguidades de geocodificação e melhorar o desempenho.
  • Utilize RoutesOptions globais: Defina uma vez os valores partilhados e substitua apenas quando necessário por rota.
  • Mantenha as opções consistentes: Misturar motores de encaminhamento, unidades ou modos de otimização entre rotas pode dificultar comparações.

Perguntas frequentes#

O que faz a API de Rotas?
A API de Rotas calcula uma ou várias rotas num único pedido. Cada resultado pode incluir localizações ordenadas, distância, tempo e saída de mapa opcional, dependendo das opções.
Como me autentico no Routes (REST e SOAP)?
Os pedidos REST enviam a TrackServiceKey no cabeçalho X-API-Key. Os pedidos SOAP CalculateRoutes enviam a TrackServiceKey em SessionIDHeader como SessionID.
Quando devo usar Routes em vez de Route?
Utilize Route quando precisar de calcular uma única rota. Utilize Routes quando quiser calcular várias rotas num único pedido em lote.
Quais são os erros mais comuns da API de Rotas?
Os erros mais comuns incluem X-API-Key em falta ou inválido, falhas de autenticação SOAP com SessionIDHeader, Locations em falta, coordenadas inválidas e valores de enum inválidos.

Próximo passo: otimizar entre veículos

Se precisar de atribuir paragens a vários veículos e otimizar a ordem das paragens de cada veículo, continue para a API de Dispatch.

Ir para Dispatch Swagger UI