Definir um ponto para um trajeto

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

Por padrão, a API trata os pontos de referência intermediários como paradas em um trajeto. No entanto, é possível configurar um ponto de passagem intermediário como um ponto de passagem via que o veículo atravessa sem parar.

Use pontos de passagem para moldar ou ajustar um trajeto específico. Em vez de dividir o trajeto em paradas de coleta 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 trecho de via preferido ou evitar um risco 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 propriedade via do waypoint como true no recurso REST Waypoint ou na mensagem gRPC Waypoint.

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

A propriedade via é mais eficaz quando você cria rotas em resposta a arrastar pontos de referência em um mapa. Essa abordagem permite que você veja como a rota final aparece em tempo real e ajuda a colocar pontos de parada em locais acessíveis.

Exemplo: definir um ponto de passagem

O exemplo a seguir demonstra como definir "via": true em um ponto de parada intermediário em uma solicitação computeRoutes POST 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'

Usar endereços ou IDs de lugar para pontos de passagem diretos

Recomendamos coordenadas de latitude e longitude para roteamento direto preciso, mas também é possível especificar pontos de passagem 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 à via pode resultar em variações ou imprecisões de rota em comparação com coordenadas exatas.

Se você especificar um ponto de parada usando uma string de endereço ou um Plus Code, a API fará a geocodificação do local e retornará o ID de lugar correspondente na matriz geocodingResults.intermediates da 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 lugares para pontos de passagem

O exemplo a seguir mostra uma solicitação com três pontos de passagem intermediários diretos, cada um 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 com os IDs de lugar da origem, do destino e dos dois waypoints intermediários especificados por endereço nos índices 0 e 2 da solicitação. A API omite o ponto de referência 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"
      }
    ]
  }
}