Ustaw pośrednie punkty na drodze

Punkty pośrednie to lokalizacje między miejscem wyjazdu a miejscem docelowym, przez które ma przebiegać trasa. Punkt pośredni może być przystankiem lub możesz go określić jako miejsce, przez które chcesz przejeżdżać. Przykład punktu drogi dla przystanku znajdziesz w artykule Ustawianie przystanku na trasie. Przykład punktu pośredniego na trasie: Ustawianie punktu pośredniego na trasie.

Użyj właściwości tablicy intermediates metody computeRoutes (REST) lub ComputeRoutes (gRPC), aby zdefiniować maksymalnie 25 punktów pośrednich.

W przypadku każdego pośredniego punktu pośredniego w żądaniu obiekt Route (REST) lub obiekt Route (gRPC) w odpowiedzi dodaje wpis do tablicy legs, aby podać szczegóły tego etapu podróży.

Każdy odcinek trasy jest reprezentowany przez obiekt RouteLeg (REST) lub RouteLeg (gRPC). Aby określić, które pola RouteLeg mają być zwracane, użyj maski pola odpowiedzi.

Przykład: ustawianie punktu pośredniego na trasie

W tym przykładzie użyto właściwości tablicy intermediates, aby dodać pojedynczy punkt pośredni do treści żądania POST dotyczącego trasy.

W tym przykładzie w nagłówku X-Goog-FieldMask użyto maski pola odpowiedzi, która określa, aby w odpowiedzi zwracać te pola:

  • routes.duration
  • routes.distanceMeters
  • routes.legs odpowiadający całemu obiektowi RouteLeg.
curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    },
    "sideOfRoad": true
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      }
    }
  ],
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE",
  "departureTime": "2022-10-15T15:01:23.045123456Z",
  "computeAlternativeRoutes": false,
  "routeModifiers": {
    "avoidTolls": false,
    "avoidHighways": false,
    "avoidFerries": false
  },
  "languageCode": "en-US",
  "units": "IMPERIAL"
}'
-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'

Odpowiedź na to wywołanie zawiera tablicę legs. Każdy krok etapu jest reprezentowany przez obiekt RouteLegStep (REST) lub RouteLegStep (gRPC).

{
  "routes": [
    {
      "legs": [
        # First leg
        {
            "distanceMeters": 207,
            "duration": "89s",
            "staticDuration": "89s",
            "polyline": {
                "encodedPolyline": "ipkcFjgchVd@@@cF]@@oCK?"
            },
            "startLocation": {
                "latLng": {
                    "latitude": 37.4197318,
                    "longitude": -122.0826233
                }
            },
            "endLocation": {
                "latLng": {
                    "latitude": 37.419734,
                    "longitude": -122.08077919999998
                }
            },
            "steps": [            {
              "distanceMeters": 21,
              "staticDuration": "6s",
              "polyline": {
                "encodedPolyline": "ipkcFjgchVd@@"
              },
              "startLocation": {
                "latLng": {
                  "latitude": 37.4197318,
                  "longitude": -122.0826233
                }
              },
              "endLocation": {
                "latLng": {
                  "latitude": 37.41954,
                  "longitude": -122.08262750000002
                }
              }
            },
            ...
        },
        # Second leg
        {
            "distanceMeters": 598,
            "duration": "159s",
            "staticDuration": "159s",
            "polyline": {
                "encodedPolyline": "ipkcFz{bhVh@??{@xPBP?J}E{E?"
            },
            "startLocation": {
                "latLng": {
                    "latitude": 37.419734,
                    "longitude": -122.08077919999998
                }
            },
            "endLocation": {
                "latLng": {
                    "latitude": 37.417616599999995,
                    "longitude": -122.07938820000001
                }
            },
            "steps": [
                {
                  ...