Buat panduan yang disesuaikan

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

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

  • Pertama-tama, Anda harus 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 akan mengontrol dan menerima aliran peristiwa dari sesi navigasi secara independen dari instance UI. Artinya, aplikasi dapat berjalan tanpa UI, atau diteruskan ke semua pengalaman berbasis UI. Dengan pendekatan ini, sesi navigasi akan terus berjalan di aplikasi Anda hingga referensi terakhir dihapus darinya.
  2. Menetapkan penyedia lokasi yang terpasang di jalan. Gunakan penyedia lokasi jika Anda ingin aplikasi memiliki pemantauan lokasi yang berkelanjutan, seperti saat menampilkan tampilan navigasi dengan titik biru di sepanjang rute.
  3. Siapkan pemroses untuk panduan belokan demi belokan 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 rute sederhana di layar.
    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 dari demo berikut menunjukkan navigasi yang dibuat secara terpisah dari pengontrol tampilan. Kode tersebut kemudian menambahkan peta ringkasan yang dikonfigurasi untuk menampilkan lokasi yang diambil 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 mengilustrasikan cara aplikasi Anda dapat memungkinkan 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`];