Merutekan ke titik navigasi

Navigation SDK for iOS menawarkan cara yang lebih baik untuk menentukan titik jalan, atau titik navigasi, yang memberikan pemilihan rute yang lebih akurat dan pengalaman kedatangan yang lebih baik, terutama untuk tujuan dengan beberapa pintu masuk atau titik navigasi tertentu. Anda dapat merutekan ke lokasi presisi menggunakan navigationPointToken, yang merupakan string yang mengenkode lokasi dan konteks rute tambahan. Anda juga dapat menggabungkan koordinat lintang dan bujur dengan ID Tempat untuk konteks tambahan.

Latar belakang

Sebelum v10.10, Anda dapat menentukan Waypoint menggunakan koordinat lokasi atau ID Tempat. Meskipun terkadang efektif, pemilihan rute yang hanya mengandalkan lintang dan bujur terkadang dapat menyebabkan titik penurunan atau penjemputan yang kurang optimal, terutama untuk lokasi, taman, atau bangunan besar dengan beberapa pintu masuk. Hasilnya mungkin akan dipaskan ke segmen jalan terdekat, yang mungkin bukan titik akses yang paling nyaman atau benar.

Opsi titik jalan yang ditingkatkan mengatasi hal ini dengan memungkinkan Anda memberikan lebih banyak konteks.

Menggunakan token titik navigasi

Untuk pemilihan rute yang paling akurat ke titik akses tertentu seperti pintu masuk, dok muatan, atau area penjemputan yang ditentukan, Anda dapat menggunakan navigationPointToken.

Token ini diperoleh dengan memanggil metode Destinations dari Geocoding API. Titik ini mewakili titik navigasi tertentu yang dapat dirutekan dan terkait dengan suatu tempat.

Untuk menentukan token titik navigasi:

  1. Dapatkan navigationPointToken dari respons metode SearchDestinations Geocoding API.

  2. Tentukan navigationPointToken tersebut saat Anda membuat GMSNavigationWaypoint.

Swift

// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
  navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3..",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

GMSNavigationWaypoint *waypointTwo =
    [[GMSNavigationWaypoint alloc] initWithNavigationPointToken:@"sampleNavigationPointToken"
                                                          title:@"Sydney Opera House"];

Menggunakan token titik navigasi dan token rute

Anda dapat mengambil token titik navigasi melalui Geocoding API, menggunakannya dalam permintaan API Routes untuk mendapatkan token rute, lalu hanya meneruskan token rute ke Navigation SDK. Token rute mempertahankan presisi token titik navigasi. Hal ini berguna dalam skenario seperti transportasi online atau pengiriman, saat Anda menggunakan Routes API untuk menghitung harga perjalanan dan menginginkan presisi token titik navigasi.

Dengan token rute, Navigation SDK memulai navigasi pada rute yang sama dengan yang Anda gunakan untuk menghitung harga. Hal ini mengurangi risiko penggunaan rute yang lebih panjang atau lebih pendek untuk perjalanan, yang dapat menyebabkan "kejutan harga".

Untuk mengetahui informasi selengkapnya tentang token titik navigasi dan token rute di Routes API, lihat Menentukan lokasi untuk rute dan Mendapatkan token rute. Untuk mempelajari cara merencanakan rute menggunakan token rute, lihat Merencanakan rute.

Diagram berikut menunjukkan cara aplikasi transportasi online atau pengiriman menggunakan token titik navigasi dan token rute secara bersamaan. Mulai versi 11.3, aplikasi pengemudi hanya meneruskan token rute ke Navigation SDK di langkah 7.

Diagram kasus penggunaan transportasi online atau pengiriman
Diagram kasus penggunaan transportasi online atau pengiriman

Menggabungkan ID Tempat dan lokasi

Mulai v10.10, Anda dapat memberikan ID Tempat dan koordinat lokasi saat membuat titik jalan. Metode ini berguna jika Anda ingin menentukan titik yang tepat (lokasi) sekaligus memberikan konteks tempat secara keseluruhan (ID Tempat). Hal ini memungkinkan Navigation SDK memberikan pengalaman kedatangan yang lebih lengkap dengan menandai bangunan tujuan atau menampilkan lokasi menarik di sekitar yang terkait dengan ID Tempat.

Swift

// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
  location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),  
  placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];

Pertimbangan

Jika Anda memberikan placeID dan location:

  • Rute ini terutama menargetkan location yang ditentukan.
  • placeID memberikan konteks yang meningkatkan pengalaman kedatangan.
  • Penggantian: Jika SDK menentukan bahwa placeID yang diberikan sesuai dengan fitur yang terlalu jauh dari location yang diberikan, SDK akan mengabaikan placeID. Dalam skenario ini, pemilihan rute hanya dilanjutkan ke location, dan peningkatan pengalaman kedatangan khusus tempat tidak tersedia.

Ringkasan konfigurasi titik jalan yang valid

Spesifikasi location placeID navigationPointToken Perilaku pemilihan rute Penandaan tujuan
Hanya koordinat lokasi tetapkan tidak ada tidak ada Rute ke segmen jalan yang terdekat dengan koordinat yang ditentukan Ditampilkan jika tujuan dapat disimpulkan dengan keyakinan tinggi
Khusus ID tempat tidak ada tetapkan tidak ada Rute ke titik navigasi default untuk ID Tempat ID Tempat Asal
Hanya token titik navigasi tidak ada tidak ada tetapkan Merutekan ke titik navigasi akurat yang diwakili oleh token Dari tujuan yang ditentukan dalam permintaan metode tujuan Geocoding API asli
Koordinat lokasi dan ID Tempat digabungkan tetapkan tetapkan tidak ada Rute ke segmen jalan yang terdekat dengan koordinat yang ditentukan Dari ID Tempat, meskipun tidak ditampilkan jika ID Tempat terlalu jauh dari koordinat lintang/bujur