Definir um ponto para um trajeto

Desenvolvedores do Espaço Econômico Europeu (EEE)

Por padrão, a API trata os waypoints intermediários como paradas em um trajeto. No entanto, é possível configurar um waypoint intermediário como um waypoint de passagem via pelo qual o veículo passa sem parar.

Use waypoints de passagem para moldar ou ajustar um trajeto específico. Em vez de dividir o trajeto em paradas de embarque ou desembarque separadas, um waypoint de passagem força o mecanismo de roteamento a passar por um local específico no caminho até o destino, por exemplo, para seguir um segmento de via preferencial ou evitar um perigo conhecido.

Um trajeto que contém uma origem, um ou mais waypoints intermediários de passagem e um destino contém apenas um trecho de trajeto que conecta a origem diretamente ao destino.

Para configurar um waypoint intermediário como um waypoint de passagem, defina a via propriedade do waypoint como true no recurso Waypoint da API REST ou na mensagem Waypoint do gRPC.

Embora a API Routes aceite endereços, IDs de lugar e coordenadas de latitude e longitude , as coordenadas de latitude e longitude, ou latLng, fornecem os ajustes de trajeto mais precisos para waypoints de passagem.

A propriedade via é mais eficaz quando você cria trajetos em resposta ao arrastar waypoints em um mapa. Essa abordagem permite que você veja como o trajeto final aparece em tempo real e ajuda a colocar waypoints em locais acessíveis.

Exemplo: definir um waypoint de passagem

O exemplo a seguir demonstra como definir "via": true em um waypoint intermediário em uma solicitação POST computeRoutes completa:

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Como usar endereços ou IDs de lugar para waypoints de passagem

Embora recomendemos coordenadas de latitude e longitude para um roteamento de passagem preciso, também é possível especificar waypoints intermediários usando uma string de endereço ou um ID de lugar.

Quando você usa um endereço ou ID de lugar para um waypoint de passagem, a API interpola e ajusta o local à via navegável mais próxima. Esse processo de ajuste de via às vezes pode resultar em variações ou imprecisões de trajeto em comparação com coordenadas exatas.

Se você especificar um waypoint usando uma string de endereço ou um Plus Code, a API vai geocodificar o local e retornar o ID de lugar correspondente na geocodingResults.intermediates matriz na resposta.

Para cada elemento na matriz intermediates, use a propriedade intermediateWaypointRequestIndex para determinar qual waypoint intermediário na solicitação corresponde ao ID de lugar na resposta.

Exemplo: solicitar IDs de lugar para waypoints de passagem

O exemplo a seguir mostra uma solicitação com três waypoints intermediários de passagem, cada um deles especificando "via": true:

curl -X POST -d '{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "24 Willie Mays Plaza, San Francisco, CA 94107"
  },
  "intermediates": [
    {
      "address": "450 Serra Mall, Stanford, CA 94305, USA",
      "via": true
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063",
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

A resposta inclui a matriz geocodingResults que contém os IDs de lugar da origem, do destino e dos dois waypoints intermediários especificados por endereço no índice de solicitação 0 e no índice 2. A API omite o waypoint intermediário no índice 1 de geocodingResults porque você o especificou usando coordenadas de latitude e longitude:

{
  "routes": [
    {
      "distanceMeters": 54200,
      "duration": "2400s",
      "legs": [
        {
          "distanceMeters": 54200,
          "duration": "2400s",
          "startLocation": {
            "latLng": {
              "latitude": 37.4220,
              "longitude": -122.0841
            }
          },
          "endLocation": {
            "latLng": {
              "latitude": 37.7786,
              "longitude": -122.3893
            }
          }
        }
      ]
    }
  ],
  "geocodingResults": {
    "origin": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g"
    },
    "destination": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY"
    },
    "intermediates": [
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 0,
        "type": [
          "street_address"
        ],
        "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y"
      },
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 2,
        "type": [
          "premise"
        ],
        "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0"
      }
    ]
  }
}