Menetapkan titik untuk rute yang akan dilalui

Developer Wilayah Ekonomi Eropa (EEA)

Secara default, API memperlakukan titik jalan perantara sebagai perhentian di sepanjang rute. Namun, Anda dapat mengonfigurasi titik jalan perantara sebagai titik jalan via pass-through yang dilewati kendaraan tanpa berhenti.

Gunakan titik jalan teruskan untuk membentuk atau menyesuaikan rute tertentu. Daripada membagi rute menjadi perhentian penjemputan atau pengantaran yang terpisah, titik jalan lintas memaksa mesin perutean untuk melewati lokasi tertentu dalam perjalanan ke tujuan—misalnya, untuk mengikuti segmen jalan yang disukai atau menghindari bahaya yang diketahui.

Rute yang berisi asal, satu atau beberapa titik jalan perantara yang dilalui, dan tujuan hanya berisi satu segmen rute yang menghubungkan asal langsung ke tujuan.

Untuk mengonfigurasi titik jalan perantara sebagai titik jalan teruskan, tetapkan properti via titik jalan ke true di resource Waypoint REST atau pesan Waypoint gRPC.

Meskipun Routes API menerima alamat, ID Tempat, dan koordinat lintang dan bujur, lintang dan bujur, atau latLng, koordinat memberikan penyesuaian rute yang paling presisi untuk titik jalan yang dilalui.

Properti via paling efektif saat Anda membuat rute sebagai respons terhadap penarikan titik jalan di peta. Dengan pendekatan ini, Anda dapat melihat tampilan rute akhir secara real time dan membantu Anda menempatkan titik jalan di lokasi yang dapat diakses.

Contoh: Menetapkan titik jalan terus

Contoh berikut menunjukkan cara menyetel "via": true pada titik jalan menengah dalam permintaan POST computeRoutes yang lengkap:

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'

Menggunakan alamat atau ID Tempat untuk titik jalan terus lewati

Meskipun kami merekomendasikan koordinat lintang dan bujur untuk perutean terus-terusan yang presisi, Anda juga dapat menentukan titik jalan perantara menggunakan string alamat atau ID Tempat.

Saat Anda menggunakan alamat atau ID Tempat untuk titik jalan terus, API menginterpolasi dan menyambungkan lokasi ke jalan terdekat yang dapat dilalui. Proses penyesuaian jalan ini terkadang dapat menyebabkan variasi atau ketidakakuratan rute dibandingkan dengan koordinat yang tepat.

Jika Anda menentukan titik jalan menggunakan string alamat atau Kode Plus, API akan melakukan geokode lokasi dan menampilkan ID Tempat yang cocok dalam array geocodingResults.intermediates dalam respons.

Untuk setiap elemen dalam array intermediates, gunakan properti intermediateWaypointRequestIndex untuk menentukan titik jalan perantara mana dalam permintaan yang sesuai dengan ID Tempat dalam respons.

Contoh: Meminta ID Tempat untuk titik jalan terus

Contoh berikut menunjukkan permintaan dengan tiga titik jalan perantara pass-through, yang masing-masing menentukan "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'

Respons mencakup array geocodingResults yang berisi ID Tempat untuk asal, tujuan, dan dua titik jalan perantara yang Anda tentukan berdasarkan alamat pada indeks permintaan 0 dan indeks 2. API menghilangkan titik jalan perantara pada indeks 1 dari geocodingResults karena Anda menentukannya menggunakan koordinat lintang dan bujur:

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