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

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 cần thiết lập một phiên điều hướng một cách độc lập rồi lấy 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.
  1. Tạo một phiên điều hướng bằng cách sử dụng GMSNavigationService.createNavigationSession và bắt đầu điều hướng bằng lệnh gọi setDestination. Khi trải nghiệm chỉ đườ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 một luồng sự kiện từ phiên điều hướng một cách độc lập từ một thực thể giao diện người dùng. Tức là hoạt động này có thể chạy mà không cần giao diện người dùng hoặc được chuyển sang 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í đã xác định. Sử dụng trình cung cấp vị trí nếu bạn muốn ứng dụng của mình giám sát vị trí liên tục, chẳng hạn như khi hiển thị thành phần hiển thị chỉ đường có 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 cứ 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ỉ có văn bản để truyền chỉ đường đến màn hình đơn giản.
    2. Thiết kế và điền các trường cho giao diện người dùng của riêng bạn.
  4. 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 việc 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 thành phần điều hướng được thiết lập một cách độc lập với bộ điều khiển khung hiển thị. Sau đó, đoạn 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 đã bị cố định trên đườ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 điều hướng từ một giao diện tuỳ chỉnh sang giao diện 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 vào 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 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`];