Tạo hướng dẫn tùy chỉnh

Trang này trình bày các bước tổng quan mà bạn cần làm để tạo hướng dẫn tuỳ chỉnh trong một 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 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 chế độ xem.
  • Bạn thiết lập trình nghe sự kiện để phản hồi và quản lý các sự kiện điều hướng.
  1. Tạo phiên điều hướng bằng GMSNavigationService.createNavigationSession và bắt đầu điều hướng bằng lệnh gọi setDestination. Khi trải nghiệm điều hướng của Google gọi trình điều hướng thông qua chế độ xem bản đồ điều hướng, GMSNavigationServices sẽ kiểm soát và nhận luồng sự kiện từ một phiên điều hướng một cách độ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 dựa trên giao diện người dùng nào. 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.
  2. Thiết lập nhà cung cấp vị trí chụp đường. Sử dụng trì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ị chế độ xem điều hướng có một chấm màu xanh dương dọc theo tuyến đường.
  3. Thiết lập trình nghe để nhận 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ụ:
    1. Triển khai các trường chỉ văn bản để truyền hướng dẫn đơn giản trên màn hình.
    2. 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.
  4. 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 hoạt động điều hướng được thiết lập độc lập với trình điều khiển thành phần hiển thị. Sau đó, mã 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 chụp đườ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 thao tác đ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ừ 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`];