Menentukan lokasi untuk rute

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 informasi dan contoh selengkapnya, lihat topik berikut:

Menentukan lokasi untuk rute

Anda merepresentasikan lokasi dengan membuat objek Titik Jalan (REST) atau Titik Jalan (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 garis lintang/bujur atau string alamat. ID tempat secara unik eksplisit dan memberikan manfaat geocoding untuk pemilihan rute seperti titik akses dan variabel traffic. Cara ini membantu menghindari situasi berikut yang dapat terjadi dari cara lain untuk menentukan lokasi:

  • Menggunakan koordinat lintang/bujur dapat menyebabkan lokasi dihubungkan ke jalan terdekat dengan koordinat tersebut, yang mungkin bukan titik akses ke properti, atau bahkan jalan yang dengan cepat atau aman mengarah ke tujuan.
  • String alamat harus di-geocode terlebih dahulu oleh Routes API untuk mengonversinya menjadi koordinat garis 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 disambungkan ke jalan, Anda mungkin menemukan ID tempat menawarkan hasil yang lebih baik dalam beberapa situasi.

Ambil ID tempat dari Geocoding API dan Places API (termasuk Place Autocomplete). Untuk 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 Location (REST) atau Location(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 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 tidak jelas, Routes API mungkin 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 yang ditampilkan oleh Geocoding API. Anda dapat menghindari interpretasi yang salah menggunakan ID tempat.

Menetapkan region untuk alamat

Jika Anda meneruskan string alamat yang tidak lengkap sebagai lokasi titik jalan, API mungkin menggunakan koordinat garis lintang/bujur 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 ("top-level domain"). Umumnya 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 "Kerajaan Bersatu Britania Raya dan Irlandia Utara").

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"
}

Responsnya sekarang 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 dapat menyulitkan mereka untuk menerima pesanan. Atau, orang dengan alamat mungkin lebih memilih untuk menerima pengiriman di lokasi yang lebih spesifik, seperti pintu belakang atau dok muat.

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, dan ditampilkan sebagai angka dan huruf.

Google mengembangkan Plus Codes untuk memberikan manfaat alamat kepada semua orang dan semua 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 yang tidak memiliki 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 4 karakter dan kode lokal 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 gabungan terdiri dari kode lokal berisi 6 karakter atau lebih yang digabungkan dengan lokasi 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 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, dan Geocoding API. Misalnya, Anda dapat menggunakan Geocoding API untuk melakukan geocoding terbalik pada lokasi yang ditentukan oleh koordinat lintang/bujur untuk menentukan Plus Code lokasi.