Por padrão, a API Routes retorna a rota padrão, 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. Seus clientes podem escolher o trajeto mais adequado às necessidades deles.
Considerações ao solicitar rotas alternativas
Para solicitar trajetos alternativos, considere as seguintes considerações:
Só é possível solicitar trajetos alternativos para trajetos sem waypoints intermediários. Solicitar trajetos alternativos quando o trajeto especifica waypoints intermediários não causa um erro. No entanto, nenhuma rota alternativa é retornada.
A resposta contém no máximo três rotas alternativas. No entanto, às vezes nenhuma rota alternativa está disponível e a resposta contém apenas a rota padrão.
Devido ao processamento extra necessário para calcular rotas alternativas, a solicitação delas 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 então usar essas informações para escolher qual caminho seguir. Para mais
informações, consulte Escolher quais informações retornar.
Exemplo de resposta de rotas alternativas
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 todos os 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 que o usuário selecione a rota com mais facilidade, adicione a polilinha de cada trajeto à resposta. Em seguida, você pode exibir 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 contém 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" ] } ] }