Otimizar a ordem das paradas no seu trajeto

Por padrão, o método Compute Routes da API Routes calcula uma rota com várias paradas, chamadas de pontos de referência de parada, na ordem em que você as fornece.

É possível fazer com que a API Routes otimize a rota fornecida reorganizando as paradas em uma ordem mais eficiente. A otimização de waypoints otimiza o tempo de viagem, mas também considera outros fatores, como distância e número de curvas, ao decidir qual rota é mais eficiente.

Para otimizar pontos de referência

  1. Verifique se nenhum dos pontos de passagem na rota tem via definido como true, por exemplo: {"address": "Clare,SA", "via": true}. Para mais informações sobre os waypoints intermediários, consulte Especificar waypoints intermediários.

  2. Verifique se routing_preference não está definido como TRAFFIC_AWARE_OPTIMAL.

  3. Defina optimize_waypoint_order como true. Exemplo:

    "optimizeWaypointOrder": "true",
    
  4. Especifique o campo routes.optimizedIntermediateWaypointIndex na máscara de campo:

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    RPC

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

Entender como a ordem dos pontos de passagem é otimizada

Veja como a API Routes otimiza a ordem dos pontos de passagem em uma rota:

  1. Indexa automaticamente os waypoints com base na ordem em que eles são fornecidos na solicitação, começando com 0.

  2. Otimiza a ordem dos pontos de referência usando os números de índice atribuídos a eles na solicitação.

  3. Retorna a ordem otimizada de pontos de referência no objeto routes, no campo waypoint_order, em routes.optimizedIntermediateWaypointIndex.

Exemplo

Essa solicitação pede a otimização de uma rota de Adelaide, na Austrália Meridional, para cada uma das principais regiões vinícolas da Austrália Meridional e, em seguida, o retorno a Adelaide.

curl -X POST -H 'content-type: application/json' -d ' {
  "origin": {
    "address": "Adelaide,SA"
  },
  "destination": {
    "address": "Adelaide,SA"
  },
  "intermediates": [
    {"address": "Barossa+Valley,SA"},
    {"address": "Clare,SA"},
    {"address": "Coonawarra,SA"},
    {"address": "McLaren+Vale,SA"}
  ],
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": "true"
  }' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes,geocodingResults.intermediates.intermediateWaypointRequestIndex' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

A API Routes indexa os waypoints intermediários fornecidos na solicitação, começando em 0. Exemplo:

0    {"address": "Barossa+Valley,SA"},
1    {"address": "Clare,SA"},
2    {"address": "Coonawarrav,SA"},
3    {"address": "McLaren+Vale,SA"}

Usando os números de índice dos quatro pontos de referência fornecidos na solicitação, o serviço retorna a ordem otimizada:

"optimizedIntermediateWaypointIndex": [
                3,
                2,
                0,
                1
            ]