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émDEFAULT_ROUTE
.Para trajetos alternativos, a propriedade
routeLabels
contémDEFAULT_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" ] } ] }