Menentukan lokasi untuk rute

Developer Wilayah Ekonomi Eropa (EEA)

Untuk menghitung rute, Anda harus menentukan minimal 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 mengetahui informasi dan contoh selengkapnya, lihat topik berikut:

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:

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 bersifat eksplisit dan unik serta memberikan manfaat geocoding untuk perutean seperti titik akses dan variabel lalu lintas. ID tempat membantu menghindari situasi berikut yang dapat terjadi akibat cara lain untuk menentukan lokasi:

  • Penggunaan koordinat lintang/bujur dapat menyebabkan lokasi diikat ke jalan terdekat dengan koordinat tersebut, yang mungkin bukan titik akses ke properti, atau bahkan jalan yang mengarah ke tujuan dengan cepat atau aman.
  • String alamat harus di-geocoding terlebih dahulu oleh Routes API untuk mengonversi nya 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 diikat ke 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 untuk origin dan destination:

{
  "origin":{
    "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o"
  },
  "destination":{
    "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU"
  },
  ...
}

Menentukan lokasi sebagai koordinat lintang dan bujur

Untuk menentukan lokasi di titik jalan, tentukan Lokasi (REST) atau Lokasi(gRPC) menggunakan koordinat 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
      }
    }
  },
...
}

Menentukan lokasi sebagai string alamat

String alamat adalah alamat literal yang direpresentasikan oleh string (seperti "1600 Amphitheatre Parkway, Mountain View, CA"). Geocoding adalah proses konversi 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 secara internal melakukan geocoding string 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 kedua alamat untuk mengonversinya menjadi koordinat lintang dan bujur.

Jika nilai alamat tidak jelas, Routes API dapat memanggil penelusuran untuk membedakan dari alamat yang serupa. Misalnya, "1st Street" dapat berupa nilai lengkap atau nilai sebagian 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.

Menetapkan wilayah untuk alamat

Jika Anda meneruskan string alamat yang tidak lengkap sebagai lokasi titik jalan, API mungkin menggunakan koordinat lintang/bujur geocoding 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 a ccTLD ("domain level teratas") nilai dua karakter. 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 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",
      ...
    }
  ]
}

Token titik navigasi adalah string yang mengenkode lokasi dan konteks rute tambahan. Token titik navigasi dapat memberikan perutean yang akurat ke titik akses tertentu di dekat pintu masuk, dermaga pemuatan, atau area penjemputan yang ditentukan. Hal ini berguna dalam kasus seperti pengiriman makanan atau rideshare, yang titik penjemputan atau pengantaran mungkin tidak jelas.

Anda dapat memperoleh token titik navigasi dengan memanggil metode Destinations dari Geocoding API.

Untuk menentukan token titik navigasi:

  1. Dapatkan navigationPointToken dari metode SearchDestinations Geocoding API. Lihat dokumentasi Geocoding API untuk mengetahui informasi selengkapnya.
  2. Buat Waypoint dengan meneruskan navigationPointToken.

Contoh berikut menggunakan properti navigation_point_token untuk meneruskan token titik navigasi untuk origin dan destination:

{
  "origin":{
    "navigation_point_token": "ENCODED_NAVIGATION_POINT_TOKEN_FOR_ORIGIN"
  },
  "destination":{
    "navigation_point_token": "ENCODED_NAVIGATION_POINT_TOKEN_FOR_DESTINATION"
  },
  ...
}

Menentukan lokasi sebagai Plus Codes

Banyak orang tidak memiliki alamat yang akurat, 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 tidak memiliki alamat sebenarnya. Daripada alamat dengan nama jalan dan nomor, Plus Codes didasarkan pada koordinat lintang/bujur, serta ditampilkan sebagai angka dan huruf.

Google mengembangkan Plus Codes untuk memberikan manfaat alamat kepada semua orang dan segala hal. Plus Codes 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 tanpa alamat jelas atau jika bangunan 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 6 karakter atau lebih kode lokal.

    Misalnya, untuk alamat "1600 Amphitheatre Parkway, Mountain View, CA", kode globalnya adalah "849V" dan kode lokalnya adalah "CWC8+R9". Kemudian, gunakan seluruh Plus Codes 10 karakter untuk menentukan nilai lokasi sebagai "849VCWC8+R9".

  • Kode gabungan 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 bagian kota, negara bagian, kode pos, dan negara dari alamat dalam bentuk "CRHJ+C3 Stanford, CA 94305, USA".

    Misalnya, hitung rute dengan menentukan titik jalan untuk rute origin dan destination menggunakan Plus Codes:

    {
      "origin":{
        "address": "849VCWC8+R9"
      },
      "destination":{
        "address": "CRHJ+C3 Stanford, CA 94305, USA"
      },
      "travelMode": "DRIVE"
    }

Plus Codes didukung di Google Maps Platform API, termasuk Place Autocomplete, Place Details, Directions API (Legacy), dan Geocoding API. Misalnya, Anda dapat menggunakan Geocoding API untuk melakukan geocoding terbalik lokasi yang ditentukan oleh koordinat lintang/bujur untuk menentukan Plus Codes lokasi.