Buat panduan yang disesuaikan

Halaman ini membahas langkah-langkah umum yang Anda ikuti untuk membuat panduan yang disesuaikan sebagai bagian dari pengalaman navigasi kustom.

Proses ini berbeda dengan proses yang dijelaskan dalam Menavigasi rute sebagai berikut:

  • Anda pertama-tama membuat sesi navigasi secara independen dan mendapatkan instance navigator melalui sesi, bukan dengan memanggil pengontrol tampilan.
  • Anda menyiapkan pemroses peristiwa untuk merespons dan mengelola peristiwa navigasi.
  1. Buat sesi navigasi menggunakan GMSNavigationService.createNavigationSession dan mulai navigasi dengan panggilan setDestination. Saat pengalaman navigasi Google memanggil navigator melalui tampilan peta navigasi, GMSNavigationServices akan mengontrol dan menerima aliran peristiwa dari sesi navigasi secara independen dari instance UI. Artinya, composable ini dapat berjalan tanpa UI, atau diteruskan ke pengalaman berbasis UI mana pun. Dengan pendekatan ini, sesi navigasi akan terus berjalan di aplikasi Anda hingga referensi terakhir dihapus darinya.
  2. Membuat penyedia lokasi yang terkunci ke jalan. Gunakan penyedia lokasi jika Anda ingin aplikasi memiliki pemantauan lokasi berkelanjutan, seperti saat menampilkan tampilan navigasi dengan titik biru di sepanjang rute.
  3. Siapkan pemroses untuk panduan belokan demi belokan yang mendetail dengan menerapkan protokol GMSNavigatorListener. Kemudian, ubah informasi tersebut menjadi apa pun yang diperlukan untuk pengalaman navigasi kustom Anda. Contoh:
    1. Terapkan kolom khusus teks untuk transmisi layar sederhana dari rute.
    2. Desain dan isi kolom untuk UI Anda sendiri.
  4. Siapkan simulator navigasi. Hal ini diperlukan untuk pengembangan dan pengujian.

Membuat sesi navigasi independen

Cuplikan kode berikut dari demo menunjukkan navigasi yang dibuat secara independen dari pengontrol tampilan. Kode tersebut kemudian menambahkan peta ringkasan yang dikonfigurasi untuk menampilkan lokasi yang saat ini terkunci ke jalan.

// Create the navigation session.

 _navigationSession = [GMSNavigationServices createNavigationSession];
 GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =
     _navigationSession.roadSnappedLocationProvider;
 [roadSnappedLocationProvider startUpdatingLocation];
 GMSNavigator *navigator = _navigationSession.navigator;
 [navigator addListener:self];
 navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;
 navigator.sendsBackgroundNotifications = NO;
 _navigationSession.started = YES;
​​ [navigator setDestinations:@[ destination ]
                   callback:^(GMSRouteStatus routeStatus) {
                      // …handle changes in route status.
                    }];

 // Add an overview map.
 _mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
 [self.mainStackView addArrangedSubview:_mapView];
 [self.mainStackView setNeedsLayout];
 _mapView.settings.compassButton = YES;
 _mapView.delegate = self;
 _mapView.myLocationEnabled = YES;
 _mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;

Meneruskan navigasi dari pengalaman kustom ke pengalaman Google

Cuplikan kode ini menggambarkan cara aplikasi Anda mengizinkan pengguna memasuki pengalaman navigasi Google dari pengalaman navigasi kustom. Cuplikan kode ini juga menunjukkan cara aplikasi Anda melakukan transisi ini saat membagikan peta.

`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];

[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];