Solicitar trajetos alternativos

Por padrão, a API Routes retorna a rota default, que normalmente é a mais rápida da origem ao destino. Quando você solicita rotas alternativas, a API retorna até três rotas com a rota padrão. Os clientes podem escolher a rota mais adequada para eles.

Considerações ao solicitar trajetos alternativos

Para solicitar trajetos alternativos, esteja ciente das seguintes considerações:

  • Só é possível solicitar trajetos alternativos para trajetos sem waypoints intermediários. A solicitação de trajetos alternativos quando o trajeto especifica waypoints intermediários não gera erro. No entanto, nenhuma rota alternativa é retornada.

  • A resposta contém no máximo três trajetos alternativos. No entanto, às vezes não há rotas alternativas disponíveis. Portanto, a resposta contém apenas a rota padrão.

  • Devido ao processamento extra necessário para calcular rotas alternativas, a solicitação de rotas alternativas pode aumentar o tempo de resposta da API.

Exemplo de solicitação de trajetos alternativos

Defina computeAlternativeRoutes como true para solicitar trajetos alternativos. O exemplo a seguir mostra como solicitar rotas alternativas em uma solicitação do método computeRoutes (REST).

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude":42.340173523716736,
        "longitude":-71.05997968330408
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":42.075698891472804,
        "longitude": -72.59806562080408
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference":"TRAFFIC_AWARE",
  "computeAlternativeRoutes": true
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Neste exemplo, você especifica uma máscara de campo para que a resposta contenha apenas as propriedades duration, distanceMeters, e routeLabels para cada rota. Seu cliente pode usar essas informações para escolher qual rota seguir. Para mais informações, consulte Escolher quais informações retornar.

Exemplo de resposta de trajetos alternativos

Na resposta, use a propriedade de matriz routeLabels para identificar a rota de alcance:

  • Para a rota padrão, a propriedade routeLabels contém DEFAULT_ROUTE.

  • Para trajetos alternativos, a propriedade routeLabels contém DEFAULT_ROUTE_ALTERNATE.

Neste exemplo, a resposta contém a rota padrão e duas rotas alternativas. Os valores das propriedades duration e distanceMeters são diferentes para cada rota:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}

Incluir polilinhas na resposta

Para facilitar a seleção do trajeto pelo usuário, adicione à resposta a polilinha de cada trajeto. Depois, você pode mostrar cada polilinha em um mapa.

Para adicionar a polilinha, inclua routes.polyline na máscara de campo:

-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'

A resposta vai conter a polilinha de cada trajeto:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "polyline": {
        "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "polyline": {
        "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "polyline": {
        "encodedPolyline": "FVLL|Af@HPAV…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}