Produk ini dalam status Lama. Mulai Oktober 2026, Directions API (Lama) tidak dapat lagi diaktifkan untuk project Google Cloud baru. Project yang ada tetap didukung sepenuhnya. Untuk fitur baru dan peningkatan performa, migrasikan ke Routes API.
Untuk penghitungan rute yang merespons input pengguna secara real time (misalnya, dalam elemen antarmuka pengguna), Anda dapat menggunakan Directions API (Lama) atau, jika Anda menggunakan Maps JavaScript API, gunakan Layanan Directions. Untuk penggunaan sisi server, Anda dapat menggunakan Klien Java, Klien Python, Klien Go, dan Klien Node.js untuk Layanan Google Maps.
Dengan Directions API (Lama), Anda dapat:
- Telusuri rute untuk beberapa moda transportasi, termasuk transportasi umum, mengemudi, berjalan kaki, atau bersepeda.
- Mengembalikan arah multi-bagian dengan menggunakan serangkaian titik jalan.
- Tentukan tempat asal, tujuan, dan titik jalan sebagai string teks (yaitu, "Chicago, IL" atau "Darwin, NT, Australia"), sebagai ID tempat, atau sebagai koordinat lintang/bujur.
API menampilkan rute yang paling efisien saat menghitung rute. Waktu perjalanan adalah faktor utama yang dioptimalkan, tetapi API juga dapat memperhitungkan faktor lain seperti jarak, jumlah belokan, dan sebagainya saat memutuskan rute yang paling efisien.
Sebelum memulai
Sebelum mulai menggunakan Directions API (Lama), Anda harus memiliki project dengan akun penagihan dan mengaktifkan Directions API (Lama). Untuk mempelajari lebih lanjut, lihat Menyiapkan project di Konsol Cloud.
Membuat permintaan Directions API (Lama)
Permintaan Directions API (Lama) menggunakan format berikut:
https://maps.googleapis.com/maps/api/directions/outputFormat?parameters
dengan outputFormat dapat berupa salah satu dari nilai berikut:
json(direkomendasikan) menunjukkan output dalam JavaScript Object Notation (JSON)xmlmenunjukkan output sebagai XML
Catatan: URL harus dienkode dengan benar agar valid dan dibatasi hingga 16.384 karakter untuk semua layanan web. Perhatikan batas ini saat membuat URL Anda.
Sesuai dengan standar dalam URL, semua parameter dipisah menggunakan karakter ampersand (&). Semua karakter yang dicadangkan (misalnya tanda plus "+") harus dienkode ke URL.
Daftar parameter dan kemungkinan nilainya disebutkan di bawah ini.
Parameter yang diperlukan
destination
ID tempat, alamat, atau nilai lintang/bujur tekstual yang ingin Anda hitung rutenya. Opsi untuk parameter tujuan sama dengan parameter asal.
asal
ID tempat, alamat, atau nilai lintang/bujur tekstual yang menjadi titik awal penghitungan rute.
-
ID tempat harus diawali dengan
place_id:. Anda dapat mengambil ID tempat dari Geocoding API dan Places API (termasuk Place Autocomplete). Untuk contoh penggunaan ID tempat dari Place Autocomplete, lihat Place Autocomplete dan Directions. Untuk informasi selengkapnya tentang ID tempat, lihat Ringkasan ID tempat.origin=place_id:ChIJ3S-JXmauEmsRUcIaWtf4MzE -
Jika Anda meneruskan alamat, layanan Directions akan melakukan geocoding pada string dan mengonversinya menjadi koordinat lintang/bujur untuk menghitung rute. Koordinat ini mungkin berbeda dari yang ditampilkan oleh Geocoding API, misalnya pintu masuk bangunan, bukan pusatnya.
origin=24+Sussex+Drive+Ottawa+ONPenggunaan ID tempat lebih disarankan daripada penggunaan alamat atau koordinat lintang/bujur. Menggunakan koordinat akan selalu menghasilkan titik yang diposisikan ke jalan terdekat dengan koordinat tersebut - yang mungkin bukan titik akses ke properti, atau bahkan jalan yang akan mengarah ke tujuan dengan cepat atau aman.
-
Jika Anda meneruskan koordinat, titik akan diposisikan ke jalan terdekat. Sebaiknya teruskan ID tempat. Jika Anda meneruskan koordinat, pastikan tidak ada spasi di antara nilai lintang dan bujur.
origin=41.43206,-81.38992 -
Plus Codes harus diformat sebagai kode global atau kode gabungan. Format Plus Codes seperti yang ditunjukkan di sini (tanda plus diubah ke bentuk URL menjadi
%2Bdan spasi diubah ke bentuk URL menjadi%20).-
Kode global adalah kode area berisi 4 karakter dan kode lokal berisi 6 karakter atau lebih (849VCWC8+R9 adalah
849VCWC8%2BR9). -
Kode gabungan adalah kode lokal berisi 6 karakter atau lebih
dengan lokasi yang eksplisit (CWC8+R9 Mountain View, CA, USA adalah
CWC8%2BR9%20Mountain%20View%20CA%20USA).
-
Kode global adalah kode area berisi 4 karakter dan kode lokal berisi 6 karakter atau lebih (849VCWC8+R9 adalah
Parameter opsional
alternatif
Jika ditetapkan ke true, menentukan bahwa layanan Directions dapat
memberikan lebih dari satu alternatif rute dalam respons. Perhatikan bahwa memberikan alternatif rute dapat memperlambat waktu respons dari server. Kolom ini hanya tersedia untuk permintaan tanpa titik jalan perantara. Untuk informasi selengkapnya, lihat
panduan titik jalan.
arrival_time
Menentukan waktu kedatangan yang diinginkan untuk rute transportasi umum, dalam detik
sejak tengah malam, 1 Januari 1970 UTC. Anda dapat menentukan departure_time atau arrival_time, tetapi tidak keduanya.
Perhatikan bahwa arrival_time harus ditentukan sebagai bilangan bulat.
hindari
Menunjukkan bahwa rute yang dihitung akan menghindari fitur yang ditunjukkan. Parameter ini mendukung argumen berikut:
-
tollsmenunjukkan bahwa rute yang dihitung harus menghindari jalan/jembatan tol. -
highwaysmenunjukkan bahwa rute yang dihitung akan menghindari jalan raya. -
ferriesmenunjukkan bahwa rute yang dihitung akan menghindari kapal feri. -
indoormenunjukkan bahwa rute yang dihitung harus menghindari tangga dalam ruangan untuk rute jalan kaki dan transportasi umum.
Anda dapat meminta rute yang menghindari kombinasi jalan tol, jalan raya, dan kapal feri dengan meneruskan beberapa batasan ke parameter avoid. Contoh:
avoid=tolls|highways|ferries.
departure_time
Menentukan waktu keberangkatan yang diinginkan. Anda dapat menentukan waktu sebagai
bilangan bulat dalam detik sejak tengah malam, 1 Januari 1970 UTC. Jika
departure_time yang lebih baru dari 9999-12-31T23:59:59.999999999Z
ditentukan, API akan mengembalikan departure_time ke
9999-12-31T23:59:59.999999999Z. Atau, Anda dapat menentukan nilai
now, yang menetapkan waktu keberangkatan ke waktu saat ini (tepat hingga
detik terdekat). Waktu keberangkatan bisa ditetapkan dalam dua hal:
-
Untuk permintaan dengan mode perjalanan transportasi umum: Anda dapat menentukan salah satu dari
departure_timeatauarrival_time. Jika tidak ada waktu yang ditentukan,departure_timeakan ditetapkan secara default ke sekarang (yaitu, waktu keberangkatan ditetapkan secara default ke waktu saat ini). -
Untuk permintaan dengan mode transportasi mengemudi: Anda dapat menentukan
departure_timeuntuk menerima rute dan durasi perjalanan (kolom respons: duration_in_traffic) yang memperhitungkan kondisi lalu lintas.departure_timeharus ditetapkan ke waktu saat ini atau waktu mendatang. Tidak boleh waktu yang sudah lewat.
departure_time saat
mode=driving dibatasi hingga maksimum 100 elemen per permintaan. Jumlah asal dikalikan dengan jumlah tujuan menentukan jumlah elemen.
bahasa
Bahasa yang digunakan untuk menampilkan hasil. Perhatikan bahwa hal ini hanya berlaku untuk
alamat yang di-geocoding di start_address dan
end_address, teks yang dilokalkan di kolom distance dan
duration (di rute dan langkah), dan deskripsi
manuver di html_instructions, tetapi tidak untuk nama dan
alamat di html_instructions, yang diformat dalam
bahasa dan skrip lokalnya.
- Lihat daftar bahasa yang didukung. Google sering memperbarui bahasa yang didukung, sehingga daftar ini mungkin tidak lengkap.
-
Jika
languagetidak diberikan, API akan mencoba menggunakan bahasa pilihan seperti yang ditentukan dalam headerAccept-Language. - API ini melakukan yang terbaik untuk memberikan alamat yang dapat dibaca oleh pengguna dan penduduk setempat. Untuk mencapai sasaran tersebut, API ini menampilkan alamat jalan dalam bahasa lokal, yang ditransliterasikan ke skrip yang dapat dibaca oleh pengguna jika perlu, dengan mengamati bahasa pilihan. Semua alamat lainnya ditampilkan dalam bahasa pilihan. Komponen alamat semuanya ditampilkan dalam bahasa yang sama, yang dipilih dari komponen pertama.
- Jika nama tidak tersedia dalam bahasa pilihan, API akan menggunakan kecocokan terdekat.
- Bahasa pilihan memiliki pengaruh kecil pada kumpulan hasil yang dipilih API untuk ditampilkan, dan urutan kemunculannya. Geocoder menafsirkan singkatan secara berbeda bergantung pada bahasa, seperti singkatan untuk jenis jalan, atau sinonim yang mungkin valid dalam satu bahasa, tetapi tidak dalam bahasa lain. Misalnya, utca dan tér adalah sinonim untuk jalan dalam bahasa Hungaria.
mode
Untuk penghitungan jarak dan rute, Anda dapat menentukan
moda transportasi yang akan digunakan. Secara default, mode driving digunakan.
Secara default, rute dihitung sebagai rute mobil. Mode perjalanan berikut didukung:
-
driving(default) menunjukkan rute mobil atau jarak standar menggunakan jaringan jalan. -
walkingmeminta rute atau jarak jalan kaki melalui jalur pejalan kaki & trotoar (jika tersedia). -
bicyclingmeminta rute sepeda atau jarak bersepeda melalui jalur sepeda & jalan yang disukai (jika tersedia). -
transitmeminta rute atau jarak menggunakan rute transportasi umum (jika tersedia). Jika Anda menetapkan mode ke transportasi umum, Anda dapat menentukandeparture_timeatauarrival_time. Jika tidak ada waktu yang ditentukan,departure_timeakan ditetapkan secara default ke sekarang (yaitu, waktu keberangkatan ditetapkan secara default ke waktu saat ini). Anda juga dapat menyertakantransit_modedan/atautransit_routing_preferencesecara opsional. Perjalanan transportasi umum tersedia hingga 7 hari ke belakang atau hingga 100 hari ke depan, bergantung pada ketersediaan informasi transportasi umum yang disediakan oleh penyedia data. Jadwal transportasi umum sering berubah, perjalanan transportasi umum yang tersedia dapat berubah seiring waktu, dan tidak ada jaminan untuk memberikan hasil yang konsisten untuk prediksi jauh sebelumnya.
region
Kode wilayah, yang ditetapkan 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").
traffic_model
Menentukan asumsi yang akan digunakan saat menghitung waktu dalam lalu lintas. Setelan ini memengaruhi nilai yang ditampilkan di kolom duration_in_traffic dalam respons, yang berisi prediksi waktu lalu lintas berdasarkan rata-rata historis. Parameter traffic_model hanya dapat ditentukan
untuk rute mobil jika permintaan menyertakan
departure_time. Nilai yang tersedia untuk parameter ini adalah:
-
best_guess(default) menunjukkan bahwa duration_in_traffic yang ditampilkan akan berupa perkiraan waktu perjalanan terbaik berdasarkan informasi historis kondisi lalu lintas dan info lalu lintas real time. Lalu lintas langsung menjadi lebih penting jikadeparture_timesemakin dekat ke waktu sekarang. -
pessimisticmenunjukkan bahwa duration_in_traffic yang ditampilkan biasanya akan lebih lama daripada waktu perjalanan sesungguhnya, meskipun pada hari-hari tertentu dengan kondisi lalu lintas yang sangat padat dapat lebih lama dari nilai ini. -
optimisticmenunjukkan bahwa duration_in_traffic yang ditampilkan biasanya akan lebih singkat daripada waktu perjalanan yang sesungguhnya, meskipun jika hari-hari tertentu dengan kondisi lalu lintas yang sangat lancar dapat lebih cepat dari nilai ini.
Nilai default best_guess akan memberikan prediksi yang paling berguna untuk sebagian besar kasus penggunaan. Prediksi waktu perjalanan best_guess mungkin lebih singkat daripada optimistic, atau lebih lama daripada pessimistic, karena cara model prediksi best_guess mengintegrasikan informasi lalu lintas live.
transit_mode
Menentukan satu atau beberapa moda transportasi umum yang diinginkan. Parameter ini hanya dapat ditentukan untuk rute transportasi umum. Parameter ini mendukung argumen berikut:
-
busmenunjukkan bahwa rute yang dihitung akan mengutamakan perjalanan dengan bus. -
subwaymenunjukkan bahwa rute yang dihitung akan mengutamakan perjalanan dengan kereta bawah tanah. -
trainmenunjukkan bahwa rute yang dihitung akan mengutamakan perjalanan dengan kereta api. -
trammenunjukkan bahwa rute yang dihitung akan mengutamakan perjalanan dengan trem dan LRT. -
railmenunjukkan bahwa rute yang dihitung akan mengutamakan perjalanan dengan kereta api, trem, LRT, dan kereta bawah tanah. Fungsi ini setara dengantransit_mode=train|tram|subway.
transit_routing_preference
Menentukan preferensi untuk rute transportasi umum. Dengan parameter ini, Anda dapat memprioritaskan opsi yang ditampilkan, alih-alih menerima rute terbaik default yang ditentukan oleh API. Parameter ini hanya dapat ditentukan untuk rute transportasi umum. Parameter ini mendukung argumen berikut:
-
less_walkingmenunjukkan bahwa rute yang dihitung akan mengutamakan rute yang tidak memerlukan berjalan kaki terlalu jauh. -
fewer_transfersmenunjukkan bahwa rute yang dihitung akan mengutamakan jumlah transfer tertentu.
unit
Menentukan sistem unit yang akan digunakan saat menampilkan hasil.
Hasil rute berisi teks dalam kolom jarak yang dapat ditampilkan kepada pengguna untuk menunjukkan jarak "langkah" tertentu dari rute. Secara default, teks ini menggunakan sistem satuan dari negara atau wilayah asal.
Misalnya, rute dari "Chicago, IL" ke "Toronto, ONT" akan menampilkan hasil dalam mil, sedangkan rute perjalanan balik akan menampilkan hasil dalam kilometer. Anda dapat mengganti sistem unit ini dengan menyetelnya secara eksplisit dalam parameter unit permintaan, dengan meneruskan salah satu nilai berikut:
-
metricmenentukan penggunaan sistem metrik. Jarak tekstual ditampilkan menggunakan kilometer dan meter. -
imperialmenentukan penggunaan sistem Imperial (Inggris). Jarak tekstual dikembalikan menggunakan mil dan kaki.
titik jalan
Menentukan array lokasi perantara yang akan disertakan di sepanjang rute
antara titik asal dan tujuan sebagai lokasi yang dilewati atau tempat persinggahan. Titik jalan mengubah rute dengan mengarahkannya melalui lokasi yang ditetapkan. API ini mendukung titik jalan untuk mode perjalanan berikut: mengemudi,
berjalan kaki, dan bersepeda; bukan transportasi umum. Anda dapat memberikan satu atau beberapa lokasi
yang dipisahkan dengan karakter pipa (| atau %7C), dalam
bentuk ID tempat, alamat, atau koordinat lintang/bujur. Secara default, layanan Directions menghitung rute menggunakan titik jalan sesuai urutan yang diberikan. Prioritas untuk mengurai nilai titik jalan adalah ID tempat, koordinat lintang/bujur, lalu alamat.
-
Jika Anda meneruskan ID tempat, Anda harus mengawalinya dengan
place_id:. Anda dapat mengambil ID tempat dari Geocoding API dan Places API (termasuk Place Autocomplete). Untuk contoh penggunaan ID tempat dari Place Autocomplete, lihat Place Autocomplete dan Directions. Untuk informasi selengkapnya tentang ID tempat, lihat Ringkasan ID tempat.Untuk efisiensi dan akurasi, gunakan ID tempat jika memungkinkan. ID ini secara unik eksplisit seperti pasangan nilai lintang/bujur dan memberikan manfaat geocoding untuk pemilihan rute seperti titik akses dan variabel lalu lintas. Tidak seperti alamat, ID tidak mengharuskan layanan melakukan penelusuran atau permintaan perantara untuk detail tempat; oleh karena itu, performanya lebih baik. -
Jika Anda meneruskan koordinat lintang/bujur, nilai akan langsung dikirim ke server frontend untuk menghitung rute tanpa geocoding. Titik-titik tersebut dipaskan ke jalan dan mungkin tidak memberikan akurasi yang dibutuhkan aplikasi Anda. Gunakan koordinat jika Anda yakin bahwa nilai tersebut benar-benar menentukan titik yang diperlukan aplikasi Anda untuk pemilihan rute, tanpa mempertimbangkan kemungkinan titik akses atau detail geocoding tambahan. Pastikan koma
(
%2C) dan bukan spasi (%20) memisahkan nilai lintang dan bujur. - Jika Anda meneruskan alamat, layanan Directions akan melakukan geocoding pada string dan mengonversinya menjadi koordinat lintang/bujur untuk menghitung rute. Jika nilai alamat ambigu, nilai tersebut dapat memicu penelusuran untuk memperjelas alamat yang serupa. Misalnya, "1st Street" dapat berupa nilai lengkap atau nilai parsial untuk "1st street NE" atau "1st St SE". Hasil ini mungkin berbeda dengan hasil yang ditampilkan oleh Geocoding API. Anda dapat menghindari kemungkinan salah tafsir menggunakan ID tempat.
-
Atau, Anda dapat menyediakan kumpulan titik yang dienkode menggunakan
Algoritma Polyline yang Dienkode. Anda akan mendapati bahwa kumpulan yang dienkode berguna untuk sejumlah besar titik jalan, karena URL-nya jauh lebih pendek. Semua layanan web
memiliki batas URL 16.384 karakter.
-
Polyline yang dienkode harus diawali dengan
enc:dan diikuti dengan titik dua (:). Contoh:waypoints=enc:gfo}EtohhU:. -
Anda juga dapat menyertakan beberapa polyline yang dienkode, yang dipisahkan oleh
karakter pipa (
|). Misalnya,waypoints=via:enc:wc~oAwquwMdlTxiKtqLyiK:|enc:c~vnAamswMvlTor@tjGi}L:| via:enc:udymA{~bxM:
-
Polyline yang dienkode harus diawali dengan
Mempengaruhi rute dengan titik jalan persinggahan dan titik jalan yang dilewati
Untuk setiap titik jalan dalam permintaan, respons rute menambahkan entri ke array legs untuk memberikan detail persinggahan di segmen perjalanan tersebut.
Jika Anda ingin memengaruhi rute menggunakan titik jalan tanpa menambahkan
persinggahan, tambahkan awalan via: ke titik jalan. Titik jalan yang diawali dengan via: tidak akan menambahkan entri ke array legs, tetapi akan mengarahkan perjalanan melalui titik jalan tersebut.
URL berikut mengubah permintaan sebelumnya sehingga perjalanan dirutekan melalui Lexington tanpa berhenti:
https://maps.googleapis.com/maps/api/directions/json?
origin=Boston,MA&destination=Concord,MA
&waypoints=Charlestown,MA|via:Lexington,MA
Awalan via: paling efektif saat membuat rute sebagai respons terhadap pengguna yang menarik titik jalan di peta. Dengan demikian,
pengguna dapat melihat tampilan rute akhir secara real-time dan membantu memastikan
bahwa titik jalan ditempatkan di lokasi yang dapat diakses oleh
Directions API.
via: untuk menghindari persinggahan akan menghasilkan rute
yang ketat dalam penafsiran titik jalan tersebut. Penafsiran ini dapat mengakibatkan putar balik yang drastis pada rute atau ZERO_RESULTS dalam kode status respons jika Directions API tidak dapat membuat rute melalui titik tersebut.
Optimalkan titik jalan Anda
Secara default, layanan Directions menghitung rute melalui titik jalan yang diberikan dalam urutan yang ditentukan. Secara opsional, Anda dapat meneruskan
optimize:true sebagai argumen pertama dalam parameter titik jalan
agar layanan Directions dapat mengoptimalkan rute yang disediakan
dengan menyusun ulang titik jalan dalam urutan yang lebih efisien. (Pengoptimalan ini adalah penerapan dari permasalahan penjual keliling.) Waktu perjalanan adalah
faktor utama yang dioptimalkan. Namun, faktor lain seperti jarak,
jumlah belokan, dan sebagainya dapat diperhitungkan saat memutuskan
rute yang paling efisien. Semua titik jalan harus merupakan persinggahan agar layanan Directions dapat mengoptimalkan rute.
Jika Anda menginstruksikan layanan Directions untuk mengoptimalkan urutan titik jalan, urutannya akan ditampilkan pada kolom waypoint_order dalam objek rute. Kolom
waypoint_order menampilkan nilai yang berbasis nol.
Contoh berikut menghitung perjalanan darat dari Adelaide, Australia Selatan ke setiap wilayah penghasil wine utama di Australia Selatan menggunakan pengoptimalan rute.
https://maps.googleapis.com/maps/api/directions/json?
origin=Adelaide,SA&destination=Adelaide,SA
&waypoints=optimize:true|Barossa+Valley,SA|Clare,SA|Connawarra,SA|McLaren+Vale,SA
Pemeriksaan rute yang dihitung akan menunjukkan bahwa penghitungan menggunakan titik jalan dalam urutan titik jalan berikut:
"waypoint_order": [ 3, 2, 0, 1 ]
Langkah berikutnya
Contoh rute
- Mode perjalanan
- Informasi lalu lintas
- Titik jalan dan pengoptimalan titik jalan
- Batasan rute
- Sistem unit
- Pembiasan wilayah
- Pengubah lokasi
Respons rute
- DirectionsResponse
- DirectionsRoute
- DirectionsLeg
- DirectionsStep dan DirectionsPolyline
- DirectionsTransitDetails
- DirectionsStatus
- DirectionsGeocodedWaypoint