Untuk menghitung rute, Anda harus menentukan setidaknya lokasi asal rute dan tujuan rute. Anda menentukan lokasi ini sebagai titik jalan di rute.
Selain asal dan tujuan, Anda dapat menentukan berbagai jenis titik jalan dan cara menangani titik jalan untuk rute. Untuk informasi dan contoh selengkapnya, lihat topik berikut:
- Menentukan arah kendaraan dan sisi jalan
- Menentukan titik jalan perantara
- Menetapkan perhentian di sepanjang rute
- Menetapkan titik yang akan dilewati rute
- Mengoptimalkan urutan perhentian di rute Anda
Menentukan lokasi untuk rute
Anda merepresentasikan lokasi dengan membuat objek Waypoint (REST) atau Waypoint (gRPC). Dalam definisi titik jalan, Anda dapat menentukan lokasi dengan salah satu cara berikut:
- ID tempat (disarankan)
- Koordinat lintang/bujur
- String alamat ("Chicago, IL" atau "Darwin, NT, Australia")
- Kode Plus
Anda dapat menentukan lokasi untuk semua titik jalan dalam permintaan dengan cara yang sama, atau Anda dapat mencampurnya. Misalnya, Anda dapat menggunakan koordinat lintang/bujur untuk titik jalan asal dan menggunakan ID tempat untuk titik jalan tujuan.
Untuk efisiensi dan akurasi, gunakan ID tempat, bukan koordinat lintang/bujur atau string alamat. ID tempat secara unik bersifat eksplisit dan memberikan manfaat geocoding untuk perutean seperti titik akses dan variabel traffic. Cara ini membantu menghindari situasi berikut yang dapat terjadi akibat cara lain untuk menentukan lokasi:
- Menggunakan koordinat lintang/bujur dapat menyebabkan lokasi disesuaikan dengan jalan terdekat dengan koordinat tersebut - yang mungkin bukan titik akses ke properti, atau bahkan jalan yang dengan cepat atau aman menuju ke tujuan.
- String alamat harus di-geocode terlebih dahulu oleh Routes API untuk mengonversinya menjadi koordinat lintang/bujur sebelum dapat menghitung rute. Konversi ini dapat memengaruhi performa.
Menentukan lokasi sebagai ID tempat
Anda dapat menggunakan ID tempat untuk menentukan lokasi titik jalan. Karena koordinat lintang dan bujur disesuaikan dengan jalan, Anda mungkin menemukan bahwa ID tempat memberikan hasil yang lebih baik dalam beberapa situasi.
Ambil ID tempat dari Geocoding API dan Places API (termasuk Place Autocomplete). Untuk mengetahui informasi selengkapnya tentang ID tempat, lihat Ringkasan ID tempat.
Contoh berikut menggunakan properti placeId
untuk meneruskan ID tempat bagi origin
dan destination
:
{ "origin":{ "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o" }, "destination":{ "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU" }, ... }
Menentukan lokasi sebagai koordinat lintang dan bujur
Untuk menentukan lokasi di titik jalan, tentukan Location (REST) atau Location(gRPC) menggunakan koordinat garis lintang/bujur.
Misalnya, tentukan titik jalan untuk rute origin
dan destination
menggunakan koordinat latitude
dan longitude
:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, ... }
Tentukan lokasi sebagai string alamat
String alamat adalah alamat literal yang diwakili oleh string (seperti "1600 Amphitheatre Parkway, Mountain View, CA"). Geocoding adalah proses mengonversi string alamat menjadi koordinat lintang dan bujur (seperti lintang 37.423021 dan bujur -122.083739).
Saat Anda meneruskan string alamat sebagai lokasi titik jalan, Routes API akan melakukan geocoding string secara internal untuk mengonversinya menjadi koordinat lintang dan bujur.
Misalnya, untuk menghitung rute, Anda menentukan titik jalan untuk rute origin
dan
destination
menggunakan string alamat:
{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "450 Serra Mall, Stanford, CA 94305, USA" }, ... }
Dalam contoh ini, Routes API melakukan geocoding pada kedua alamat untuk mengonversinya menjadi koordinat lintang dan bujur.
Jika nilai alamat ambigu, Routes API dapat memanggil penelusuran untuk membedakan dari alamat serupa. Misalnya, "Jalan 1" dapat berupa nilai lengkap atau nilai parsial untuk "Jalan 1 NE" atau "Jalan 1 SE". Hasil ini mungkin berbeda dengan yang ditampilkan oleh Geocoding API. Anda dapat menghindari kemungkinan salah penafsiran menggunakan ID tempat.
Menetapkan wilayah untuk alamat
Jika Anda meneruskan string alamat yang tidak lengkap sebagai lokasi titik jalan, API mungkin menggunakan koordinat garis lintang/bujur geocode yang salah. Misalnya, Anda membuat permintaan yang menentukan "Toledo" sebagai asal dan "Madrid" sebagai tujuan untuk rute mengemudi:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE" }
Dalam contoh ini, "Toledo" ditafsirkan sebagai kota di negara bagian Ohio di Amerika Serikat, bukan di Spanyol. Oleh karena itu, permintaan menampilkan array kosong, yang berarti tidak ada rute:
{ [] }
Anda dapat mengonfigurasi API untuk menampilkan hasil yang dibiaskan ke wilayah tertentu dengan menyertakan parameter regionCode
. Parameter ini menentukan kode wilayah sebagai nilai dua karakter ccTLD ("domain level teratas"). Sebagian besar kode ccTLD identik dengan kode ISO 3166-1, dengan beberapa pengecualian. Misalnya, ccTLD Inggris Raya adalah "uk"
(.co.uk) sedangkan kode ISO 3166-1-nya adalah "gb" (secara teknis untuk entitas "The
United Kingdom of Great Britain and Northern Ireland").
Permintaan rute untuk "Toledo" ke "Madrid" yang menyertakan parameter regionCode
akan menampilkan hasil yang sesuai karena "Toledo" ditafsirkan sebagai
kota di Spanyol:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE", "regionCode": "es" }
Respons kini berisi rute yang dihitung dari Toledo, Spanyol ke Madrid, Spanyol:
{ "routes": [ { "distanceMeters": 75330, "duration": "4137s", ... } ] }
Menentukan lokasi sebagai Plus Codes
Banyak orang tidak memiliki alamat yang tepat, sehingga mereka kesulitan menerima pengiriman. Atau, orang yang memiliki alamat mungkin lebih suka menerima pengiriman di lokasi yang lebih spesifik, seperti pintu belakang atau dermaga pemuatan.
Plus Codes berfungsi seperti alamat untuk orang atau tempat yang belum memiliki alamat sebenarnya. Daripada alamat dengan nama jalan dan nomor, Plus Codes didasarkan pada koordinat lintang/bujur, dan ditampilkan sebagai angka dan huruf.
Google mengembangkan Plus Codes untuk memberikan manfaat alamat kepada semua orang dan semuanya. Kode Plus adalah referensi lokasi yang dienkode, yang berasal dari koordinat lintang/bujur, yang mewakili area: 1/8000 derajat x 1/8000 derajat (sekitar 14 m x 14 m di khatulistiwa) atau lebih kecil. Anda dapat menggunakan Plus Codes sebagai pengganti alamat di tempat yang tidak memiliki alamat atau tempat yang bangunannya tidak diberi nomor atau jalan tidak diberi nama.
Plus Codes harus diformat sebagai kode global atau kode gabungan:
- Kode global terdiri dari kode area berisi 4 karakter dan kode lokal berisi 6 karakter atau lebih.
Misalnya, untuk alamat "1600 Amphitheatre Parkway, Mountain View, CA", kode globalnya adalah "849V" dan kode lokalnya adalah "CWC8+R9". Kemudian, Anda menggunakan seluruh Kode Plus 10 karakter untuk menentukan nilai lokasi sebagai "849VCWC8+R9".
- Kode majemuk terdiri dari kode lokal berisi 6 karakter atau lebih yang digabungkan dengan lokasi yang eksplisit.
Misalnya, alamat "450 Serra Mall, Stanford, CA 94305, USA" memiliki kode lokal "CRHJ+C3". Untuk alamat gabungan, gabungkan kode lokal dengan kota, negara bagian, kode pos, dan bagian negara dari alamat dalam bentuk "CRHJ+C3 Stanford, CA 94305, USA".
Misalnya, hitung rute dengan menentukan titik jalan untuk rute
origin
dandestination
menggunakan Plus Codes:{ "origin":{ "address": "849VCWC8+R9" }, "destination":{ "address": "CRHJ+C3 Stanford, CA 94305, USA" }, "travelMode": "DRIVE" }
Kode Plus didukung di API Google Maps Platform, termasuk Place Autocomplete, Place Details, Directions API (Lama), dan Geocoding API. Misalnya, Anda dapat menggunakan Geocoding API untuk melakukan geocoding terbalik pada lokasi yang ditentukan oleh koordinat lintang/bujur untuk menentukan Kode Plus lokasi tersebut.