Trang này trình bày các bước tổng quan mà bạn cần làm theo để tạo hướng dẫn tuỳ chỉnh trong trải nghiệm chỉ đường tuỳ chỉnh.
Quy trình này khác với quy trình được mô tả trong phần Chỉ đường theo tuyến đường ở những điểm 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 này 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. Trong trường hợp trải nghiệm đi theo chỉ dẫn của Google gọi trình điều hướng thông qua chế độ xem bản đồ đi theo chỉ dẫn,GMSNavigationServicessẽ kiểm soát và nhận một luồng sự kiện từ một phiên đi theo chỉ dẫn độ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à ứng dụng có thể chạy mà không cần giao diện người dùng hoặc được chuyể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 ứng dụng.Thiết lập một trình cung cấp vị trí được điều chỉnh theo đường. Sử dụng trình cung cấp vị trí nếu bạn muốn ứng dụng của mình có tính năng giám sát vị trí liên tục, chẳng hạn như khi hiển thị một 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 trình nghe để biết 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 kỳ thông tin nào cần thiết cho trải nghiệm điều hướng tuỳ chỉnh của bạn. Ví dụ:- Triển khai các trường chỉ có văn bản để truyền chỉ đường đơn giản trên màn hình.
- Thiết kế và điền sẵn các trường cho giao diện người dùng của riêng bạn.
Thiết lập 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 trong bản minh hoạ cho thấy tính năng chỉ đường được thiết lập độc lập với trình điều khiển khung hiển thị. Sau đó, mã sẽ thêm một bản đồ toàn cảnh được định cấu hình để hiển thị vị trí hiện tại được bám vào đườ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;
Chuyển tính năng chỉ đườ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 truy cập vào 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 biết 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`];