Ustawianie punktu na drodze, przez którą przechodzi

Domyślnie punkty pośrednie są używane do zatrzymywania się na potrzeby odbioru i zwrotów, ale możesz też określić, że punkt pośredni ma służyć tylko do przejazdu.

Trasa zawierająca punkt drogi źródłowej, punkt drogi pośredniej, przez który można przejść, i punkt drogi docelowej zawiera tylko 1 etap, który łączy miejsce wyjazdu z miejscem docelowym, przechodząc przez punkt drogi pośredniej (nazywany via).

Skonfiguruj pośredni punkt kontrolny jako punkt kontrolny przelotowy, ustawiając właściwość via punktu kontrolnego na true za pomocą punktu kontrolnego (REST) lub punktu kontrolnego (gRPC).

Właściwość via jest najbardziej skuteczna podczas tworzenia tras w odpowiedzi na przeciąganie przez użytkownika punktów na mapie. Dzięki temu użytkownik może zobaczyć, jak może wyglądać ostateczna trasa w czasie rzeczywistym, i zapewnić, że punkty pośrednie są umieszczane w miejscach dostępnych dla usługi Obliczanie tras.

Ten przykład pokazuje, jak oznaczyć punkt pośredni jako punkt przelotu.

{
  "location": {
    "latLng": {
      "latitude":37.419734,
      "longitude":-122.0827784
    }
  },
  "via": true
}

Dostęp do identyfikatorów miejsc docelowych na trasie

Jeśli określisz lokalizację punktu początkowego, docelowego lub pośredniego jako ciąg znaków adresu lub kod Plus Code, interfejs API spróbuje znaleźć najbardziej odpowiednią lokalizację, która ma odpowiadający identyfikator miejsca. Tablica geocodingResults.intermediates w wynikach zawiera identyfikator miejsca odpowiadający lokalizacji punktów kontrolnych wraz z dodatkowymi danymi o tej lokalizacji.

W przypadku każdego elementu tablicy intermediates użyj właściwości intermediateWaypointRequestIndex, aby określić, który pośredni punkt kontrolny w żądaniu odpowiada identyfikatorowi miejsca w odpowiedzi.

Na przykład:

  • W żądaniu podajesz 3 punkty pośrednie. Dwa z tych punktów kontrolnych są określone za pomocą ciągów adresów, a jeden za pomocą współrzędnych szerokości i długości geograficznej.

  • W polu maski odpowiedzi uwzględniasz element geocodingResults, aby zwrócić w wynikach tablicę geocodingResults.

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"
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      }
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063"
    }
  ],
  "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'

Odpowiedź zawiera tablicę geocodingResults z identyfikatorem miejsca docelowego, miejsca wylotu i 2 spośród 3 punktów pośrednich. Są to punkty kontrolne o indeksach 0 i 2 w żądaniu. Punkt kontrolny o indeksie 1 w żądaniu został określony za pomocą współrzędnych geograficznych, dlatego został pominięty w tablicy geocodingResults w odpowiedzi.

{
  "routes": [{...}],
  "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"
      }
    ]
  }
}