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 terlebih dahulu 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. Jika pengalaman navigasi Google memanggil navigator melalui tampilan peta navigasi, GMSNavigationServices mengontrol dan menerima aliran peristiwa dari sesi navigasi secara independen dari instance UI. Artinya, aplikasi dapat dijalankan tanpa UI, atau diteruskan ke pengalaman berbasis UI apa pun. Dengan pendekatan ini, sesi navigasi akan terus berjalan di aplikasi Anda hingga referensi terakhir dihapus darinya.
  2. Buat penyedia lokasi yang disesuaikan dengan jalan. Gunakan penyedia lokasi jika Anda ingin aplikasi Anda 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 hanya teks untuk transmisi layar sederhana dari petunjuk arah.
    2. Desain dan isi kolom untuk UI Anda sendiri.
  4. Menyiapkan simulator navigasi. Hal ini diperlukan untuk pengembangan dan pengujian.

Membuat sesi navigasi independen

Cuplikan kode berikut dari demo menunjukkan navigasi yang dibuat secara terpisah dari pengontrol tampilan. Kemudian, kode menambahkan peta ringkasan yang dikonfigurasi untuk menampilkan lokasi yang disesuaikan dengan jalan saat ini.

// 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 dapat mengizinkan pengguna untuk 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`];