Feed data belokan demi belokan memberikan informasi khusus navigasi ke perangkat yang tidak dirancang untuk panduan navigasi berbasis peta. API ini menyediakan manuver mendatang dengan elemen yang Anda berikan:
- ikon (kiri, kanan, putar balik)
- nomor belokan di bundaran
- nama jalan
- perkiraan jarak dan waktu ke langkah navigasi berikutnya atau tujuan akhir
Anda dapat menggunakan feed belokan demi belokan untuk menciptakan pengalaman saat UI Navigation SDK lengkap tidak sesuai, seperti untuk layar kecil. Misalnya, Anda dapat menggunakannya untuk pengendara kendaraan roda dua, dengan memproyeksikan panduan khusus navigasi untuk membantu mereka mencapai tujuan dengan lebih cepat dan lebih percaya diri dengan gangguan minimal.
Elemen tampilan navigasi penting
Kolom utama untuk setiap langkah navigasi adalah nama jalan lengkap,
manuver, dan jarak total langkah, yang tersedia di
GMSNavigationStepInfo.
Untuk keseluruhan perjalanan, Anda mungkin ingin menampilkan sisa waktu dan jarak
ke langkah saat ini atau ke tujuan, yang semuanya tersedia di
GMSNavigationNavInfo.
Gambar di sebelah kanan menunjukkan contoh elemen navigasi penting ini.
Menyiapkan pemroses peristiwa
Untuk menggunakan data khusus navigasi, Anda harus menerapkan pemroses peristiwa untuk peristiwa didChangeNavInfo. Dalam pemroses peristiwa, akses informasi perjalanan dan langkah untuk memberikan navigasi belokan demi belokan kepada pengguna.
Untuk mengimplementasikan pengendali peristiwa, pengontrol tampilan peta harus mengimplementasikan protokol GMSNavigatorListener. Untuk mengetahui informasi mendetail tentang penanganan peristiwa di
Navigation SDK for iOS, lihat Memproses peristiwa navigasi.
Menangani peristiwa didChangeNavInfo
Buat pemroses untuk peristiwa didChangeNavInfo guna menambahkan dukungan belokan demi belokan
ke aplikasi Anda. Di 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 dalam perjalanan, perubahan rute, atau berhenti.GMSNavigationDrivingSide— Enum yang menentukan apakah langkah ini berada di rute mengemudi di sisi kanan atau mengemudi di sisi kiri.GMSNavigationManeuver— Enum yang menentukan tindakan navigasi yang harus dilakukan, seperti belok kiri atau belok kanan.
Berikut adalah contoh pemroses peristiwa untuk peristiwa didChangeNavInfo:
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 ... } } } }
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; ... } } ... }
Status navigasi
Gunakan properti navState dari GMSNavigationNavInfo
untuk mendapatkan status navigasi saat ini, yang merupakan salah satu dari berikut ini:
Enroute - Status
GMSNavigationNavStateEnrouteberarti navigasi terpandu aktif dan pengguna berada di rute yang disediakan. Informasi tentang langkah manuver mendatang saat ini tersedia.Rerouting -
GMSNavigationNavStateReroutingberarti navigasi sedang berlangsung, tetapi navigator sedang mencari rute baru. Langkah manuver berikutnya tidak tersedia karena belum ada rute baru.Dihentikan -
GMSNavigationNavStateStoppedberarti navigasi telah berakhir. Misalnya, navigasi berhenti saat pengguna keluar dari navigasi di aplikasi. Di aplikasi contoh, statusGMSNavigationNavStateStoppedmenghapus tampilan info navigasi untuk mencegah petunjuk langkah yang masih tersisa ditampilkan.
Panduan lajur
Navigation SDK menampilkan lajur di kartu belokan navigasi sebagai objek data GMSNavigationLane dan GMSNavigationLaneDirection. Objek
GMSNavigationLane mewakili lajur tertentu selama navigasi dan memiliki
daftar objek GMSNavigationLaneDirection yang menjelaskan semua belokan yang
dapat dilakukan dari lajur ini.
Arah yang direkomendasikan untuk diambil pengemudi di lajur ditandai menggunakan kolom recommended.

Contoh panduan lajur
Cuplikan berikut mengilustrasikan representasi data lajur yang ditampilkan dalam screenshot sebelumnya.
// Lane 1
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 2
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 3
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false}]
// Lane 4
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false},
{/*GMSNavigationLaneShape=*/ GMSNavigationLaneShapeNormalRight, /*recommended=*/ false}]
Gambar panduan lajur
Navigation SDK mendukung pembuatan gambar lajur untuk setiap langkah navigasi
seperti yang disampaikan oleh GMSNavigationStepInfo. Ikon ini sesuai dengan panduan ukuran gambar CarPlay.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
Membuat ikon untuk manuver
![]()
Enum GMSNavigationManeuver
menentukan setiap kemungkinan manuver yang dapat terjadi saat menavigasi, dan Anda
bisa mendapatkan manuver untuk langkah tertentu dari properti maneuver
GMSNavigationStepInfo.
Anda harus membuat ikon manuver dan menyambungkannya dengan manuver terkait.
Untuk beberapa manuver, Anda dapat menyiapkan pemetaan satu per satu ke ikon, seperti
GMSNavigationManeuverDestinationLeft dan
GMSNavigationManeuverDestinationRight. Namun, karena beberapa manuver memiliki karakteristik yang sama dengan manuver lainnya, Anda mungkin ingin memetakan lebih dari satu manuver ke satu ikon. Misalnya, GMSNavigationManeuverTurnLeft dan
GMSNavigationManeuverOnRampLeft dapat dipetakan ke ikon belok kiri.
Beberapa manuver berisi label "Clockwise" atau "CounterClockwise" tambahan, yang ditentukan SDK berdasarkan sisi mengemudi suatu negara. Misalnya, di negara yang mengemudi di sisi kiri jalan, pengemudi mengambil putaran atau putar balik searah jarum jam, sedangkan negara yang mengemudi di sisi kanan jalan mengambil arah berlawanan arah jarum jam. Navigation SDK mendeteksi apakah manuver terjadi di lalu lintas sisi kiri atau kanan dan menghasilkan manuver yang sesuai. Oleh karena itu, ikon manuver Anda mungkin berbeda untuk manuver searah jarum jam versus berlawanan arah jarum jam.
Luaskan untuk melihat contoh ikon untuk berbagai manuver
| Ikon Contoh | Manuver Belokan demi Belokan |
|---|---|
![]() |
DEPARTUNKNOWN |
![]() |
STRAIGHTON_RAMP_UNSPECIFIEDOFF_RAMP_UNSPECIFIEDNAME_CHANGE
|
![]() |
TURN_RIGHTON_RAMP_RIGHT
|
![]() |
TURN_LEFTON_RAMP_LEFT
|
![]() |
TURN_SLIGHT_RIGHTON_RAMP_SLIGHT_RIGHTOFF_RAMP_SLIGHT_RIGHT
|
![]() |
TURN_SLIGHT_LEFTON_RAMP_SLIGHT_LEFTOFF_RAMP_SLIGHT_LEFT
|
![]() |
TURN_SHARP_RIGHTON_RAMP_SHARP_RIGHTOFF_RAMP_SHARP_RIGHT
|
![]() |
TURN_SHARP_LEFTON_RAMP_SHARP_LEFTOFF_RAMP_SHARP_LEFT
|
![]() |
TURN_U_TURN_COUNTERCLOCKWISEON_RAMP_U_TURN_COUNTERCLOCKWISEOFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
![]() |
TURN_U_TURN_CLOCKWISEON_RAMP_U_TURN_CLOCKWISEOFF_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_RIGHTOFF_RAMP_RIGHT
|
![]() |
MERGE_LEFTOFF_RAMP_LEFT
|
![]() |
FORK_RIGHTTURN_KEEP_RIGHTON_RAMP_KEEP_RIGHTOFF_RAMP_KEEP_RIGHT
|
![]() |
FORK_LEFTTURN_KEEP_LEFTON_RAMP_KEEP_LEFTOFF_RAMP_KEEP_LEFT
|
![]() |
MERGE_UNSPECIFIED
|
![]() |
DESTINATION
|
![]() |
DESTINATION_RIGHT
|
![]() |
DESTINATION_LEFT
|
![]() |
FERRY_BOAT
|
![]() |
FERRY_TRAIN
|
Menggunakan ikon yang dibuat
Navigation SDK mendukung pembuatan ikon manuver untuk
GMSNavigationStepInfo tertentu. Ikon ini sesuai dengan panduan ukuran gambar CarPlay.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];







































