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 yang dilewati kendaraan tanpa berhenti.

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

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

Untuk mengonfigurasi titik jalan perantara sebagai titik jalan yang dilewati, 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, koordinat lintang dan bujur, atau latLng, memberikan penyesuaian rute yang paling akurat untuk titik jalan yang dilewati.

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

Contoh: Menetapkan titik jalan yang dilewati

Contoh berikut menunjukkan cara menetapkan "via": true pada titik jalan perantara 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 yang dilewati

Meskipun kami merekomendasikan koordinat lintang dan bujur untuk pemilihan rute yang dilewati secara akurat, Anda juga dapat menentukan titik jalan perantara menggunakan string alamat atau ID Tempat.

Saat Anda menggunakan alamat atau ID Tempat untuk titik jalan yang dilewati, API akan menginterpolasi dan menempatkan lokasi ke jalan yang dapat dilalui terdekat. Proses penempatan jalan ini terkadang dapat menghasilkan variasi atau ketidakakuratan rute dibandingkan dengan koordinat yang tepat.

Jika Anda menentukan titik jalan menggunakan string alamat atau Kode Plus, API akan melakukan geocode pada lokasi dan menampilkan ID Tempat yang cocok dalam geocodingResults.intermediates array 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 yang dilewati

Contoh berikut menunjukkan permintaan dengan tiga titik jalan perantara yang dilewati, 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"
      }
    ]
  }
}