Ustawianie punktu na drodze, przez którą przechodzi

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Domyślnie interfejs API traktuje punkty pośrednie jako przystanki na trasie. Możesz jednak skonfigurować punkt pośredni jako punkt via, przez który pojazd przejeżdża bez zatrzymywania się.

Używaj punktów pośrednich, przez które chcesz przejechać, aby kształtować lub dostosowywać konkretną trasę. Zamiast dzielić trasę na osobne przystanki odbioru lub wysiadania, punkt pośredni wymusza na silniku routingu przejazd przez określone miejsce w drodze do miejsca docelowego, np. aby przejechać preferowanym odcinkiem drogi lub uniknąć znanego zagrożenia.

Trasa zawierająca miejsce początkowe, co najmniej 1 punkt pośredni i miejsce docelowe zawiera tylko 1 odcinek trasy, który łączy miejsce początkowe bezpośrednio z miejscem docelowym.

Aby skonfigurować punkt pośredni jako punkt, przez który ma przebiegać trasa, ustaw właściwość via punktu na true w zasobie Waypoint REST lub w wiadomości Waypoint gRPC.

Interfejs Routes API akceptuje adresy, identyfikatory miejsc oraz współrzędne szerokości i długości geograficznej, ale współrzędne szerokości i długości geograficznej lub latLng zapewniają najbardziej precyzyjne korekty trasy w przypadku punktów pośrednich.

Właściwość via jest najbardziej przydatna, gdy tworzysz trasy w odpowiedzi na przeciąganie punktów na mapie. Dzięki temu możesz w czasie rzeczywistym zobaczyć, jak wygląda ostateczna trasa, i umieszczać punkty na trasie w miejscach dostępnych dla osób z niepełnosprawnością.

Przykład: ustawianie punktu pośredniego, przez który ma przebiegać trasa

Ten przykład pokazuje, jak ustawić parametr "via": true w punkcie pośrednim w pełnym żądaniu computeRoutes POST:

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'

Używanie adresów lub identyfikatorów miejsc w przypadku punktów pośrednich

Chociaż w przypadku precyzyjnego przekazywania zalecamy używanie współrzędnych geograficznych, możesz też określić pośrednie punkty trasy za pomocą ciągu znaków adresu lub identyfikatora miejsca.

Jeśli używasz adresu lub identyfikatora miejsca w przypadku punktu pośredniego, interfejs API interpoluje i przyciąga lokalizację do najbliższej drogi, po której można się poruszać. Ten proces dopasowywania do dróg może czasami powodować różnice w trasie lub niedokładności w porównaniu z dokładnymi współrzędnymi.

Jeśli określisz punkt pośredni za pomocą ciągu adresu lub kodu plus, interfejs API geokoduje lokalizację i zwraca pasujący identyfikator miejsca w tablicy geocodingResults.intermediates w odpowiedzi.

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

Przykład: żądanie identyfikatorów miejsc dla punktów pośrednich

Poniższy przykład pokazuje żądanie z 3 pośrednimi punktami przelotowymi, z których każdy określa "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'

Odpowiedź zawiera tablicę geocodingResults z identyfikatorami miejsc dla miejsca początkowego, docelowego i 2 punktów pośrednich, które zostały określone przez adres w indeksie żądania 0 i 2. Interfejs API pomija pośredni punkt trasy w indeksie 1 z geocodingResults, ponieważ został on określony za pomocą współrzędnych geograficznych:

{
  "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"
      }
    ]
  }
}