Feed data belokan demi belokan memberikan informasi khusus navigasi ke perangkat yang tidak dirancang untuk panduan navigasi berbasis peta. Memberikan manuver mendatang dengan elemen yang Anda sediakan:
- ikon (kiri, kanan, putar balik)
- putar angka dalam bundaran
- nama jalan
- perkiraan jarak dan waktu untuk langkah navigasi berikutnya atau tujuan akhir
Anda dapat menggunakan feed belokan demi belokan untuk membuat pengalaman jika UI Navigation SDK lengkap tidak sesuai, seperti untuk tampilan layar kecil. Misalnya, Anda dapat menggunakannya untuk penumpang kendaraan roda dua, tempat Anda dapat memproyeksikan panduan khusus navigasi untuk membantu mereka mencapai tujuan dengan lebih cepat dan lebih percaya diri dengan sedikit gangguan.
Elemen tampilan navigasi penting
Kolom utama untuk setiap langkah navigasi adalah nama lengkap jalan, manuver, dan total jarak langkah, yang tersedia di GMSNavigationStepInfo.
Untuk keseluruhan perjalanan, Anda mungkin ingin menampilkan waktu dan jarak yang tersisa ke langkah saat ini atau ke tujuan, yang semuanya tersedia di GMSNavigationNavInfo. Gambar di sebelah kanan menunjukkan contoh elemen navigasi yang penting ini.
Menyiapkan pemroses peristiwa
Untuk menggunakan data khusus navigasi, Anda harus mengimplementasikan pemroses peristiwa untuk peristiwa didChangeNavInfo
. Dalam pemroses peristiwa, akses informasi perjalanan dan langkah untuk menyediakan navigasi belokan demi belokan kepada pengguna.
Untuk menerapkan pengendali peristiwa, pengontrol tampilan peta harus mengimplementasikan
protokol
GMSNavigatorListener
. Untuk informasi mendetail tentang penanganan peristiwa di Navigation SDK untuk iOS,
lihat Memproses peristiwa navigasi.
Menangani peristiwa didChangeNavInfo
Buat pemroses untuk peristiwa didChangeNavInfo
guna menambahkan dukungan belokan demi belokan ke aplikasi Anda. Pada pemroses peristiwa, gunakan class dan enum berikut untuk mengontrol
navigasi belokan demi belokan:
GMSNavigationNavInfo — Class yang menentukan informasi tentang status navigasi.
GMSNavigationStepInfo — Class yang menentukan informasi tentang satu langkah di sepanjang rute navigasi.
GMSNavigationNavState — Enum yang menentukan status navigasi saat ini, seperti pemilihan rute, perubahan rute, atau dihentikan.
GMSNavigationDrivingSide — Enum yang menentukan apakah langkah ini berada di rute berkendara di kanan atau drive-on-kiri.
GMSNavigationManeuver — Enum yang menentukan tindakan navigasi yang akan diambil, seperti belok kiri atau kanan.
Di bawah ini adalah contoh pemroses peristiwa untuk peristiwa didChangeNavInfo
:
Objective-C
// ViewController.h @interface SomeViewController () <GMSNavigatorListener> @end // ViewController.m @implementation SomeViewController // Some initialization code. ... { ... [_mapView.navigator addListener:self]; ... } #pragma mark GMSNavigatorListener - (void)navigator:(GMSNavigator *)navigator didUpdateNavInfo:(GMSNavigationNavInfo *)navInfo { // Get the current step information if (navInfo.navState == GMSNavigationNavStateEnroute) { GMSNavigationStepInfo *currentStep = navInfo.currentStep; if (currentStep) { ... roadNameLabel.text = currentStep.simpleRoadName; ... } } ... }
Swift
// ViewController.swift class SomeViewController: UIViewController { ... mapView.navigator?.add(self); ... } extension SomeViewController: GMSNavigatorListener { func navigator(_ navigator: GMSNavigator, didUpdateNavInfo navInfo: GMSNavigationNavInfo) { // Get the current step information if navInfo.navState == .enroute { if let currentStep = navInfo.currentStep { ... roadNameLabel.text = currentStep.simpleRoadName ... } } } }
Status navigasi
Gunakan properti navState
dari GMSNavigationNavInfo
untuk mendapatkan status navigasi saat ini, yang merupakan salah satu dari berikut ini:
Enroute - Status
GMSNavigationNavStateEnroute
berarti navigasi yang dipandu saat ini aktif dan pengguna berada di rute yang diberikan. Informasi tentang langkah manuver mendatang saat ini tersedia.Perubahan rute -
GMSNavigationNavStateRerouting
berarti navigasi sedang berlangsung, tetapi navigator mencari rute baru. Langkah manuver mendatang tidak tersedia, karena belum ada rute baru.Berhenti -
GMSNavigationNavStateStopped
berarti navigasi telah berakhir. Misalnya, navigasi berhenti saat pengguna keluar dari navigasi di aplikasi. Pada aplikasi contoh, statusGMSNavigationNavStateStopped
akan menghapus tampilan info navigasi untuk mencegah petunjuk langkah yang masih ada ditampilkan.
Membuat ikon untuk manuver
Enum GMSNavigationManeuver
menentukan setiap kemungkinan manuver yang dapat terjadi saat bernavigasi, dan Anda
bisa mendapatkan manuver untuk langkah tertentu dari properti maneuver
GMSNavigationStepInfo.
Anda harus membuat ikon manuver dan memasangkannya dengan manuver terkait.
Untuk beberapa manuver, Anda dapat menyiapkan pemetaan one-to-one ke ikon, seperti
GMSNavigationManeuverDestinationLeft
dan GMSNavigationManeuverDestinationRight
.
Namun, karena beberapa manuver memiliki karakteristik yang sama dengan mean lain,
Anda mungkin perlu memetakan lebih dari satu
manuver ke satu ikon. Misalnya, GMSNavigationManeuverTurnLeft
dan
GMSNavigationManeuverOnRampLeft
dapat dipetakan ke ikon belokan kiri.
Beberapa manuver berisi label tambahan “Searah Jarum Jam” atau “Searah Jarum Jam”, yang ditentukan SDK berdasarkan sisi mengemudi suatu negara. Misalnya, di negara tempat mengemudinya berada di sisi kiri jalan, pengemudi mengambil putaran atau putar-u searah jarum jam, sedangkan negara-negara sisi kanan jalan berputar berlawanan arah jarum jam. Navigation SDK mendeteksi apakah manuver terjadi dalam lalu lintas sisi kiri atau kanan dan menghasilkan manuver yang sesuai. Oleh karena itu, ikon manuver Anda mungkin berbeda untuk manuver searah jarum jam dan berlawanan arah jarum jam.
Luaskan untuk melihat contoh ikon dalam berbagai manuver
Ikon Contoh | Manuver Berputar ke Belakang |
---|---|
DEPART UNKNOWN |
|
STRAIGHT ON_RAMP_UNSPECIFIED OFF_RAMP_UNSPECIFIED NAME_CHANGE
|
|
TURN_RIGHT ON_RAMP_RIGHT
|
|
TURN_LEFT ON_RAMP_LEFT
|
|
TURN_SLIGHT_RIGHT ON_RAMP_SLIGHT_RIGHT OFF_RAMP_SLIGHT_RIGHT
|
|
TURN_SLIGHT_LEFT ON_RAMP_SLIGHT_LEFT OFF_RAMP_SLIGHT_LEFT
|
|
TURN_SHARP_RIGHT ON_RAMP_SHARP_RIGHT OFF_RAMP_SHARP_RIGHT
|
|
TURN_SHARP_LEFT ON_RAMP_SHARP_LEFT OFF_RAMP_SHARP_LEFT
|
|
TURN_U_TURN_COUNTERCLOCKWISE ON_RAMP_U_TURN_COUNTERCLOCKWISE OFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
|
TURN_U_TURN_CLOCKWISE ON_RAMP_U_TURN_CLOCKWISE OFF_RAMP_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_CLOCKWISE
|
|
ROUNDABOUT_U_TURN_COUNTERCLOCKWISE
|
|
ROUNDABOUT_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_CLOCKWISE
|
|
ROUNDABOUT_EXIT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_EXIT_CLOCKWISE
|
|
MERGE_RIGHT OFF_RAMP_RIGHT
|
|
MERGE_LEFT OFF_RAMP_LEFT
|
|
FORK_RIGHT TURN_KEEP_RIGHT ON_RAMP_KEEP_RIGHT OFF_RAMP_KEEP_RIGHT
|
|
FORK_LEFT TURN_KEEP_LEFT ON_RAMP_KEEP_LEFT OFF_RAMP_KEEP_LEFT
|
|
MERGE_UNSPECIFIED
|
|
DESTINATION
|
|
DESTINATION_RIGHT
|
|
DESTINATION_LEFT
|
|
FERRY_BOAT
|
|
FERRY_TRAIN
|