Menentukan lokasi untuk rute

Untuk menghitung rute, Anda harus menentukan setidaknya lokasi rute asal dan tujuan rute. Anda menetapkan lokasi ini sebagai titik jalan pada rute perjalanan.

Selain tempat asal dan tujuan, Anda dapat menentukan berbagai jenis titik jalan dan cara menangani titik jalan untuk rute. Untuk informasi lebih lanjut dan contoh, lihat topik berikut:

Menentukan lokasi untuk rute

Anda merepresentasikan lokasi dengan membuat Waypoint (REST) atau Waypoint (gRPC). Di kolom definisi titik jalan, Anda bisa menetapkan lokasi dengan salah satu cara berikut:

Anda bisa menetapkan lokasi untuk semua titik titik dalam permintaan dengan cara yang sama, atau Anda dapat mencampurnya. Misalnya, Anda dapat menggunakan koordinat lintang/bujur untuk titik jalan asal dan gunakan ID tempat sebagai titik jalan tujuan.

Untuk efisiensi dan akurasi, gunakan ID tempat, bukan lintang/bujur atau string alamat. ID tempat bersifat eksplisit dan memberikan manfaat geocoding untuk pemilihan rute seperti titik akses dan variabel lalu lintas. Mereka membantu menghindari situasi berikut yang dapat disebabkan oleh cara lain untuk menentukan lokasi:

  • Menggunakan koordinat lintang/bujur dapat menyebabkan dipaskan ke jalan yang paling dekat dengan koordinat tersebut - yang mungkin bukan titik akses ke properti, atau bahkan jalan yang cepat atau aman mengarah ke tujuan.
  • String alamat harus di-geocoding terlebih dahulu oleh Routes API untuk dikonversi mereka ke koordinat lintang/bujur sebelum dapat menghitung rute. Konversi ini dapat memengaruhi performa.

Menentukan lokasi sebagai ID tempat

Anda dapat menggunakan ID tempat untuk menetapkan lokasi titik jalan. Karena koordinat lintang dan bujur diikat ke jalan, Anda dapat menemukan ID tempat menawarkan hasil yang lebih baik dalam beberapa situasi.

Ambil ID tempat dari Geocoding API dan Places API (termasuk Place Pelengkapan Otomatis). Untuk informasi selengkapnya tentang ID tempat, lihat Ringkasan ID Tempat.

Contoh berikut menggunakan properti placeId untuk meneruskan ID tempat untuk keduanya origin dan destination:

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

Menetapkan lokasi sebagai koordinat lintang dan bujur

Untuk mendefinisikan lokasi dalam titik jalan, tentukan Location (REST) atau Location(gRPC) dengan 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 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 melakukan geocoding terhadap string secara internal untuk mengubahnya menjadi garis lintang dan garis bujur pada koordinat tertentu.

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 terhadap kedua alamat untuk mengonversinya menjadi koordinat lintang dan bujur.

Jika nilai alamat ambigu, Routes API mungkin memanggil penelusuran untuk membedakan dari alamat yang serupa. Misalnya, "1st Street" bisa jadi nilai lengkap atau nilai parsial untuk "1st street NE" atau "1st SE". Ini mungkin berbeda dari hasil yang ditampilkan oleh Geocoding API. Anda dapat menghindari dan mungkin salah penafsiran menggunakan ID tempat.

Menetapkan region untuk alamat

Jika Anda meneruskan string alamat yang tidak lengkap sebagai lokasi titik jalan, API mungkin menggunakan hasil geocode koordinat garis lintang/bujur yang salah. Misalnya, Anda membuat permintaan yang menentukan "Toledo" sebagai origin 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 tersebut akan menampilkan array kosong, yang berarti tidak ada rute:

{
  []
}

Anda dapat mengonfigurasi API untuk menampilkan hasil yang dibiaskan ke region tertentu dengan termasuk parameter regionCode. Parameter ini menetapkan kode wilayah sebagai ccTLD ("domain level teratas") nilai yang sama dengan dua karakter. Sebagian besar kode ccTLD identik dengan kode ISO 3166-1, dengan beberapa pengecualian penting. Misalnya, ccTLD Inggris Raya adalah "uk" (.co.uk) sedangkan kode ISO 3166-1-nya adalah "gb" (secara teknis untuk entitas "The Inggris Raya dan Irlandia Utara").

Permintaan rute untuk "Toledo" ke "Madrid" yang mencakup regionCode mengembalikan hasil yang sesuai karena "Toledo" ditafsirkan sebagai kota di Spanyol:

{
  "origin":{
    "address": "Toledo"
  },
  "destination":{
    "address": "Madrid"
  },
  "travelMode": "DRIVE",
  "regionCode": "es"
}

Sekarang responsnya 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, yang dapat menyulitkan mereka untuk menerima pengiriman. Atau, orang yang memiliki alamat dapat memilih untuk menerima pengiriman di lokasi yang lebih spesifik, seperti pintu masuk belakang atau pemuatan dok.

Plus Codes berfungsi seperti alamat untuk orang atau tempat yang tidak memiliki dengan alamat aktual. Sebagai ganti alamat dengan nama jalan dan nomor, Plus Codes didasarkan pada koordinat garis lintang/garis bujur, dan ditampilkan sebagai angka dan huruf besar.

Google mengembangkan Plus Codes untuk memberikan manfaat alamat bagi semua orang dan segalanya. Plus Codes dienkode ke referensi lokasi, yang berasal dari koordinat lintang/bujur, yang mewakili luas 1/8000 derajat dengan 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 ada atau tidak memiliki bangunan 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 6 karakter atau kode lokal yang lebih panjang.

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

  • Kode gabungan terdiri dari 6 karakter atau lebih kode lokal yang digabungkan dengan lokasi eksplisit.

    Misalnya, alamat "450 Serra Mall, Stanford, CA 94305, AS" memiliki kode lokal "CRHJ+C3". Untuk senyawa alamat, gabungkan kode lokal dengan kota, negara bagian, kode pos, dan negara alamat email dalam bentuk "CRHJ+C3 Stanford, CA 94305, USA".

    Misalnya, menghitung 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 dalam API Google Maps Platform, termasuk Pelengkapan Otomatis Tempat, Place Details, Directions API, dan Geocoding API. Misalnya, Anda bisa menggunakan Geocoding API untuk geocoding terbalik lokasi yang ditetapkan oleh koordinat lintang/bujur untuk menentukan Plus Codes lokasi.