Solicitar trajetos alternativos

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ém DEFAULT_ROUTE.

  • Para todos os 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 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"
      ]
    }
   ]
}