Trang này trình bày các bước cấp cao mà bạn thực hiện để tạo hướng dẫn tuỳ chỉnh trong trải nghiệm điều hướng tuỳ chỉnh.
Quy trình này khác với quy trình được mô tả trong phần Điều hướng một tuyến đường như sau:
- Trước tiên, bạn thiết lập một phiên điều hướng độc lập và lấy một thực thể trình điều hướng thông qua phiên đó thay vì gọi trình điều khiển khung hiển thị.
- Bạn thiết lập một trình nghe sự kiện để phản hồi và quản lý các sự kiện điều hướng.
Tạo một phiên điều hướng bằng
GMSNavigationService.createNavigationSessionvà bắt đầu điều hướng bằng lệnh gọisetDestination. Khi trải nghiệm điều hướng của Google gọi trình điều hướng thông qua khung hiển thị bản đồ điều hướng, thìGMSNavigationServicessẽ kiểm soát và nhận một luồng sự kiện từ một phiên điều hướng độc lập với một thực thể giao diện người dùng. Điều này có nghĩa là phiên điều hướng có thể chạy mà không cần giao diện người dùng hoặc được truyền đến bất kỳ trải nghiệm nào dựa trên giao diện người dùng. Với phương pháp này, phiên điều hướng sẽ tiếp tục chạy trong ứng dụng của bạn cho đến khi tham chiếu cuối cùng bị xoá khỏi phiên đó.Thiết lập một nhà cung cấp vị trí được khớp với đường. Sử dụng nhà cung cấp vị trí nếu bạn muốn ứng dụng của mình liên tục theo dõi vị trí, chẳng hạn như khi hiển thị khung hiển thị điều hướng có dấu chấm màu xanh dương dọc theo tuyến đường.
Thiết lập một trình nghe để được hướng dẫn chi tiết từng chặng bằng cách triển khai giao thức
GMSNavigatorListener. Sau đó, hãy chuyển đổi thông tin đó thành bất cứ thông tin nào cần thiết cho trải nghiệm điều hướng tuỳ chỉnh. Ví dụ:- Triển khai các trường chỉ có văn bản để truyền màn hình đơn giản về chỉ đường.
- Thiết kế và điền các trường cho giao diện người dùng của riêng bạn.
Thiết lập một trình mô phỏng điều hướng. Điều này là cần thiết cho quá trình phát triển và kiểm thử.
Tạo một phiên điều hướng độc lập
Đoạn mã sau đây từ bản minh hoạ cho thấy quá trình điều hướng được thiết lập độc lập với trình điều khiển khung hiển thị. Sau đó, mã này sẽ thêm một bản đồ tổng quan được định cấu hình để hiển thị vị trí hiện tại được khớp với đường.
// 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;
Truyền thông tin điều hướng từ trải nghiệm tuỳ chỉnh sang trải nghiệm của Google
Đoạn mã này minh hoạ cách ứng dụng của bạn có thể cho phép người dùng chuyển sang trải nghiệm điều hướng của Google từ một trải nghiệm điều hướng tuỳ chỉnh. Đoạn mã này cũng cho thấy cách ứng dụng của bạn thực hiện quá trình chuyển đổi này trong khi chia sẻ bản đồ.
`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];
[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];
`…`
[`_mapView enableNavigationWithSession:_navigationSession`];