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.
Buat sesi navigasi menggunakan
GMSNavigationService.createNavigationSession
dan mulai navigasi dengan panggilansetDestination
. Jika pengalaman navigasi Google memanggil navigator melalui tampilan peta navigasi,GMSNavigationServices
mengontrol dan menerima aliran peristiwa dari sesi navigasi secara terpisah 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.Tetapkan 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.
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:- Terapkan kolom hanya teks untuk transmisi layar sederhana dari petunjuk arah.
- Desain dan isi kolom untuk UI Anda sendiri.
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`];