Điều hướng tuỳ chỉnh là gì?

Trải nghiệm chỉ đường tuỳ chỉnh có thể có nghĩa là bất kỳ thứ gì, từ một ứng dụng loại bỏ hoàn toàn việc hướng dẫn rẽ chỉ với chức năng chỉ đường ở dạng quy trình ở chế độ nền, cho đến một ứng dụng chiếu hướng dẫn được tuỳ chỉnh ở mức độ cao đến một màn hình tách biệt với thiết bị chạy trình điều hướng.

Trải nghiệm chỉ đường tuỳ chỉnh là gì?

  • Bắt đầu tính năng chỉ đường – bạn tạo một phiên chỉ đường. Tương tự như trải nghiệm chỉ đường trên Google, trải nghiệm chỉ đường tuỳ chỉnh vẫn liên quan đến việc tạo một thực thể điều hướng và đặt đích đến. Tuy nhiên, với trải nghiệm điều hướng tuỳ chỉnh, bạn có thể làm được điều này bằng cách trước tiên thiết lập một phiên chỉ đường bằng GMSNavigationServices. Phiên điều hướng là một đối tượng không phải giao diện người dùng mang trạng thái, có thể hoạt động với hoặc không có bộ điều khiển khung hiển thị.

    Xem bản minh hoạ: Bản tải xuống của SDK Điều hướng sẽ chứa một bản minh hoạ mà bạn có thể chạy để xem ví dụ về trải nghiệm chỉ đường chuyển đổi giữa hướng dẫn từng chặng thông qua tính năng chỉ đường tiêu chuẩn sang trải nghiệm chỉ đường chỉ cho thấy vị trí thiết bị di chuyển dọc theo một đường.

  • Tính năng chỉ đường đang hoạt động mà bạn cung cấp. Dưới đây là một điểm khác biệt chính khác giữa trải nghiệm chỉ đường do Google cung cấp và trải nghiệm chỉ đường tuỳ chỉnh. Thay vì chuyển hướng dẫn cho trình quản lý sự kiện tích hợp của SDK điều hướng, bạn có thể bật nguồn cấp dữ liệu từng chặng và triển khai các trình xử lý sự kiện thông qua GMSNavigatorListener. Điều này cho phép trải nghiệm của bạn phản hồi các sự kiện được mô tả trong phần Nghe sự kiện điều hướng.

  • Kết thúc tính năng chỉ đường (do bạn cung cấp). Tương tự như với trải nghiệm chỉ đường trên Google, tính năng điều hướng tuỳ chỉnh cũng yêu cầu bạn chấm dứt hoạt động điều hướng theo cách phù hợp nhất với trải nghiệm của ứng dụng.

Bảng sau đây mô tả một số trường hợp điều hướng tuỳ chỉnh.

Tình huống ví dụ

Các bước tổng quan

Bạn cần cung cấp hướng dẫn lái xe chỉ bằng văn bản cho các thiết bị nhỏ như xe 2 bánh.

Tạo trình điều hướng và thiết lập hướng dẫn từng chặng dưới dạng nguồn cấp dữ liệu cho thiết bị màn hình nhỏ trong khi trình điều hướng chạy trên điện thoại di động của người lái bên ngoài chế độ xem tức thì. Hãy xem phần Bật nguồn cấp dữ liệu từng chặng.

Những người lái xe sử dụng ứng dụng của bạn muốn có bản đồ tổng quan cho hầu hết hành trình của họ, với chỉ hướng dẫn từng chặng ở mức tối thiểu cho các đường phố trong thành phố.

Ứng dụng của bạn phải cho phép người lái xe truy cập và thoát khỏi trải nghiệm chỉ đường của Google khi họ cần mà không thay đổi các chế độ cài đặt của công cụ chỉ đường cho chế độ điểm đến và chuyến đi.

Đối với khách hàng sử dụng Dịch vụ di động: Người lái xe thường di chuyển qua các tuyến đường quen thuộc và không cần bất cứ hướng dẫn nào. Tuy nhiên, bạn cần có một cách để đảm bảo hệ thống quản lý xe của mình có thể quản lý những chuyến giao hàng hoặc chuyến đi.

Thiết lập trình điều hướng. Đặt điểm đến và nhận thông tin cập nhật về vị trí. Tích hợp SDK trình điều khiển vào ứng dụng của bạn. Để biết thông tin chi tiết, hãy xem phần Bắt đầu sử dụng SDK trình điều khiển đối với Dịch vụ gọi xe và giao hàng theo yêu cầu hoặc Giải pháp của hệ thống quản lý gần đây.

Tạo hướng dẫn tuỳ chỉnh

Phần này bao gồm các bước cấp cao mà bạn thực hiện để tạo hướng dẫn 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 và lấy một thực thể của trình điều hướng thông qua phiên đó thay vì gọi bộ điều khiển chế độ xem.
  • 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 chỉ đường bằng GMSNavigationService.createNavigationSession và bắt đầu đi theo chỉ dẫn 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 luồng sự kiện từ phiên chỉ đường một cách độc lập từ thực thể giao diện người dùng. Tức là mã 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 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í 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 liên tục theo dõi vị trí, chẳng hạn như khi hiển thị khung hiển thị chỉ đường có dấu chấm màu xanh dương dọc theo tuyến đường.
  3. 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 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ỉ có văn bản để truyền nội dung chỉ đường trên màn hình một cách đơn giản.
    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 chỉ đườ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

Các đ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 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í chụp nhanh đường hiện tại.

// 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 hoạt động điều hướng từ một trải nghiệm tuỳ chỉnh sang trải nghiệm 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 chỉ đường của Google từ một trải nghiệm chỉ đườ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 hiệu ứng 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`];