Mendapatkan matriks rute

Matriks rute adalah array dua dimensi informasi rute, dengan baris yang sesuai dengan asal dan kolom yang sesuai dengan tujuan. Dengan daftar asal dan tujuan, class Route Matrix menghitung jarak dan durasi rute yang dimulai di setiap asal dan berakhir di setiap tujuan. Gunakan class Route Matrix untuk menghitung jarak dan durasi rute untuk beberapa tempat asal dan tujuan.

Batas permintaan

Metode RouteMatrix.computeRouteMatrix() memberlakukan batas permintaan berikut untuk titik jalan menggunakan instance Alamat atau Tempat, dan untuk item. Item adalah rute antara setiap asal dan tujuan dalam matriks rute, sehingga jumlah item adalah jumlah asal dikalikan dengan jumlah tujuan. Misalnya, jika Anda memiliki 10 asal dan 10 tujuan, Anda memiliki 100 item:

  • Jumlah item tidak boleh melebihi 625 untuk rute yang bukan rute TRANSIT.
  • Jika Anda menentukan rute TRANSIT, jumlah item tidak boleh melebihi 100.
  • Jika Anda menentukan TRAFFIC_AWARE_OPTIMAL, jumlah item tidak boleh melebihi 100.
  • Jika Anda menentukan asal atau tujuan menggunakan alamat atau instance Place, Anda dapat menentukan hingga total 50 dengan cara ini.

Contoh permintaan matriks rute

Contoh berikut menunjukkan ComputeRouteMatrixRequest. Contoh ini melakukan hal berikut:

  • Menunjukkan penentuan array dua titik jalan asal dan dua titik jalan tujuan. Metode menghitung rute dari setiap asal ke setiap tujuan sehingga respons berisi empat rute.
    Dalam array, elemen pertama berada pada indeks 0, elemen kedua berada pada indeks 1, dan seterusnya.
  • Tentukan kolom yang akan ditampilkan. Dalam contoh ini, konfigurasi permintaan untuk menampilkan durationMillis, distanceMeters, dan condition untuk setiap rute.
const request = {
  origins: [origin1, origin2],
  destinations: [destinationA, destinationB],
  travelMode: google.maps.TravelMode.DRIVING,
  units: google.maps.UnitSystem.METRIC,
  fields: ['durationMillis', 'distanceMeters', 'condition'], 
};
    

Respons berisi empat kemungkinan rute untuk kombinasi semua titik jalan asal dan tujuan, seperti yang ditunjukkan dalam contoh berikut:

"matrix": {
  "rows": [
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 202587,
          "durationMillis": 10040000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 252734,
          "durationMillis": 12240000
        }
      ]
    },
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 166135,
          "durationMillis": 6596000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 216282,
          "durationMillis": 8797000
        }
      ]
    }
  ]
}
    

Identifikasi setiap rute dalam hasil menggunakan indeks asal dan tujuan untuk menemukan RouteMatrixItem yang sesuai dalam array 2D. Misalnya, RouteMatrixItem yang menjelaskan rute yang dihitung dari asal pada indeks 1 dan tujuan 0 dalam permintaan akan berada di elemen ke-2 array RouteMatrix.rows dan elemen ke-1 array RouteMatrixRow.items.

Cuplikan kode berikut menunjukkan cara mengidentifikasi RouteMatrixItem untuk menemukan rute untuk asal dan tujuan tertentu:

// Find the route for origin 'x' and destination 'y'.
const {matrix} = await RouteMatrix.computeRouteMatrix(request);
const myRouteMatrixItem = matrix.rows[x].items[y];
    

Pilih kolom yang akan ditampilkan

Saat meminta matriks rute, Anda harus menggunakan mask kolom untuk menentukan informasi yang harus ditampilkan oleh respons.

Penggunaan mask kolom juga memastikan bahwa Anda tidak meminta data yang tidak perlu, yang pada gilirannya membantu latensi respons dan menghindari pengembalian informasi yang tidak diperlukan sistem Anda.

Tentukan daftar kolom yang Anda butuhkan dengan menyetel properti ComputeRoutesMatrixRequest.fields, seperti yang ditunjukkan dalam cuplikan berikut:

fields: ['durationMillis', 'distanceMeters', 'condition'],
    

Menentukan mask kolom yang akan digunakan

Berikut cara menentukan kolom yang ingin Anda gunakan, dan membuat mask kolom untuk kolom tersebut:

  1. Minta semua kolom menggunakan mask kolom ['*'].
  2. Lihat hierarki kolom di class RouteMatrixItem untuk kolom yang Anda inginkan.
  3. Buat masker kolom menggunakan hierarki kolom yang ditampilkan di langkah sebelumnya, menggunakan format ini:

    topLevelField[.secondLevelField][.thirdLevelField][...]

Misalnya, untuk RouteMatrixItem ini:

  "travelAdvisory": {
    "fuelConsumptionMicroliters": 0,
    "tollInfo": {
      "estimatedPrices": [
        {
          "currencyCode": "USD",
          "units": 4,
          "nanos": 400000000
        }
      ]
    }
  },
    

Jika Anda hanya ingin menampilkan kolom tollInfo untuk RouteMatrixItem, mask kolom Anda adalah sebagai berikut:

fields: ['travelAdvisory.tollInfo']

Jika Anda ingin meminta perkiraan konsumsi bahan bakar, mask kolom Anda adalah sebagai berikut:

fields: ['travelAdvisory.fuelConsumptionMicroliters']

Jika Anda ingin meminta keduanya, mask kolom Anda adalah sebagai berikut:

fields: ['travelAdvisory.fuelConsumptionMicroliters', 'travelAdvisory.tollInfo']

Jika Anda ingin meminta kumpulan lengkap saran perjalanan, mask kolom Anda adalah sebagai berikut:

fields: ['travelAdvisory']