Định cấu hình thông tin gián đoạn theo thời gian thực
Thông tin gián đoạn theo thời gian thực là một tập hợp các tính năng cảnh báo người dùng về các thông tin gián đoạn trên tuyến đường của họ và cho phép người dùng báo cáo cũng như xác minh các thông tin gián đoạn mà họ gặp phải. Ví dụ về thông tin gián đoạn bao gồm tai nạn xe cộ, tắc nghẽn giao thông, sự hiện diện của cảnh sát và camera bắn tốc độ, công trình xây dựng, đóng làn đường và một số điều kiện thời tiết. Trang này giải thích các tính năng thông tin gián đoạn theo thời gian thực và các lựa chọn cấu hình của các tính năng này, bao gồm cả những điều cần cân nhắc đối với các ứng dụng sử dụng giao diện người dùng điều hướng tuỳ chỉnh.
Các tính năng thông tin gián đoạn theo thời gian thực
Navigation SDK bao gồm các tính năng thông tin gián đoạn theo thời gian thực sau đây trong trải nghiệm điều hướng cốt lõi:- Chú thích thông tin gián đoạn tương tác dọc theo các tuyến đường.
- Cảnh báo thông tin gián đoạn tự động có tính năng bình chọn trong khi đi theo chỉ dẫn.
- Báo cáo thông tin gián đoạn trong khi đi theo chỉ dẫn.
Các tính năng này có thể định cấu hình và được bật theo mặc định. Các phần sau đây sẽ cung cấp thêm thông tin về các tính năng và lựa chọn cấu hình hiện có.
Chú thích thông tin gián đoạn tương tác dọc theo các tuyến đường
Khi một ứng dụng hiển thị một tuyến đường, trong phần tổng quan về tuyến đường hoặc trong khi đi theo chỉ dẫn, mọi thông tin gián đoạn hiện tại sẽ xuất hiện dưới dạng chú thích dọc theo tuyến đường. Chú thích bao gồm một biểu tượng cho biết loại thông tin gián đoạn.
Bạn có thể kiểm soát việc hiển thị chú thích thông tin gián đoạn dọc theo các tuyến đường bằng cách sử dụng shouldDisplayPrompts. Chú thích này cũng kiểm soát việc hiển thị cảnh báo tự động khi người dùng tiếp cận một thông tin gián đoạn.
mapView.navigator.shouldDisplayPrompts = true
Hiển thị thông tin chi tiết về thông tin gián đoạn khi người dùng nhấn vào một chú thích
Người dùng có thể nhấn vào một chú thích để hiển thị thẻ thông tin có thêm thông tin về thông tin gián đoạn, bao gồm loại thông tin gián đoạn, thời điểm báo cáo gần đây nhất và trong một số trường hợp, có lựa chọn bình chọn xem thông tin gián đoạn đó còn hay không. Có 2 loại thẻ thông tin có thể xuất hiện, tuỳ thuộc vào việc người dùng có đang đi theo chỉ dẫn hay không và các lựa chọn cấu hình sẽ khác nhau đối với từng loại.
Thẻ thông tin chú thích trong phần tổng quan về tuyến đường, trước khi bắt đầu đi theo chỉ dẫn
Khi người dùng nhấn vào một chú thích trong phần tổng quan về tuyến đường, trước khi bắt đầu đi theo chỉ dẫn, một thẻ thông tin sẽ xuất hiện với thêm thông tin về thông tin gián đoạn.
Bạn có thể kiểm soát khả năng người dùng nhấn vào chú thích thông tin gián đoạn trong phần tổng quan về tuyến đường để hiển thị thêm
thông tin bằng cách sử dụng
showsIncidentCards.
mapView.settings.showsIncidentCards = true
Thẻ thông tin chú thích trong khi đi theo chỉ dẫn
Khi một chú thích thông tin gián đoạn xuất hiện dọc theo một tuyến đường trong khi đi theo chỉ dẫn, người dùng có thể nhấn vào chú thích đó để hiển thị một thẻ thông tin có thêm thông tin về thông tin gián đoạn, bao gồm loại thông tin gián đoạn và thời điểm báo cáo gần đây nhất, cũng như các nút để bình chọn xem thông tin gián đoạn đó còn hay không. Phiếu bình chọn do người dùng gửi sẽ được Google xử lý và có thể xuất hiện trên bản đồ cho những người dùng Google Maps và Navigation SDK khác, cũng như được dùng để xác định xem có tiếp tục hiển thị thông tin gián đoạn đó hay không.
Bạn có thể kiểm soát việc hiển thị và khả năng nhấn vào chú thích thông tin gián đoạn trong khi đi theo chỉ dẫn bằng cách sử dụng
shouldDisplayPrompts. Chú thích này cũng kiểm soát việc
hiển thị chú thích dọc theo các tuyến đường và việc
hiển thị cảnh báo tự động khi người dùng tiếp cận một thông tin gián đoạn.
mapView.navigator.shouldDisplayPrompts = true
Cảnh báo thông tin gián đoạn tự động có tính năng bình chọn trong khi đi theo chỉ dẫn
Trong khi đi theo chỉ dẫn, khi người dùng tiếp cận một thông tin gián đoạn dọc theo một tuyến đường, một lời nhắc sẽ xuất hiện với thông tin về thông tin gián đoạn và các nút để bình chọn xem thông tin gián đoạn đó còn hay không. Phiếu bình chọn do người dùng gửi sẽ được Google xử lý và có thể xuất hiện trên bản đồ cho những người dùng Google Maps và Navigation SDK khác, cũng như được dùng để xác định xem có tiếp tục hiển thị thông tin gián đoạn đó hay không.
Bạn có thể định cấu hình việc hiển thị lời nhắc cảnh báo trong khi đi theo chỉ dẫn bằng cách sử dụng
shouldDisplayPrompts. Lời nhắc này cũng kiểm soát việc hiển thị
chú thích dọc theo các tuyến đường.
mapView.navigator.shouldDisplayPrompts = true
Báo cáo thông tin gián đoạn trong khi đi theo chỉ dẫn
Trong chế độ thao tác, một nút sẽ xuất hiện trên giao diện người dùng điều hướng cho phép người dùng báo cáo các thông tin gián đoạn mới dọc theo tuyến đường của họ. Khi người dùng nhấn vào nút này, một trình đơn có các loại thông tin gián đoạn có thể báo cáo sẽ xuất hiện. Các báo cáo mà người dùng gửi sẽ được Google xử lý và có thể xuất hiện trên bản đồ cho những người dùng Google Maps và Navigation SDK khác.
Hiện hoặc ẩn nút báo cáo tiêu chuẩn
Bạn có thể định cấu hình khả năng hiển thị của nút báo cáo tiêu chuẩn trong khi đi theo chỉ dẫn bằng cách sử dụng
navigationReportIncidentButtonEnabled.
// Enables the incident reporting FAB to show in situations where incident // reporting is possible. mapView.settings.navigationReportIncidentButtonEnabled = true
Thêm nút báo cáo tuỳ chỉnh
Thay vì nút báo cáo thông tin gián đoạn tiêu chuẩn, bạn có thể thêm một nút báo cáo tuỳ chỉnh vào giao diện người dùng điều hướng. Khi người dùng nhấp vào nút tuỳ chỉnh, bạn có thể kích hoạt việc hiển thị trình đơn báo cáo bằng cách gọi phương thức presentReportIncidentsPanel. Trước khi thêm nút báo cáo tuỳ chỉnh, hãy xác minh rằng ứng dụng đang ở chế độ đi theo chỉ dẫn và người dùng đang ở một quốc gia có bật tính năng báo cáo bằng cách gọi reportIncidentsAvailable. Nếu một trong hai điều kiện này không đúng, thì trình đơn báo cáo sẽ không xuất hiện.
// Check if reporting is available before displaying your button let isReportingAvailable = mapview.isIncidentReportingAvailable() customReportingIncidentButton.isHidden = !isReportingAvailable customReportingIncidentButton.addTarget(self, action: #selector(didTapReportIncidentButton), for: .touchUpInside) // Trigger the reporting flow if the button is clicked func didTapReportIncidentButton() { mapView.presentReportIncidentsPanel(self) { [weak self] error in guard let self = self else { return } if let error = error as NSError? { if error.domain == GMSMapViewPresentReportIncidentPanelErrorDomain { let errorCode = GMSMapViewPresentReportIncidentPanelErrorCode(rawValue: error.code) switch errorCode { case .internal: self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "An internal error occurred." ) case .reportingNotAvailable: self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "Reporting is not available." ) case .none: self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "An unknown error occurred." ) } } else { // Handle other potential errors (e.g., network errors) self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "An unexpected error occurred: \(error.localizedDescription)" ) } } // If error is nil, the panel was presented successfully. You can add any extra logic here. } }
Làm việc với giao diện người dùng điều hướng tuỳ chỉnh
Nếu quá trình triển khai Navigation SDK của bạn bao gồm các phần tử trên giao diện người dùng tuỳ chỉnh, thì bạn cần cân nhắc các phần tử thông tin gián đoạn theo thời gian thực để tránh xung đột.
Vị trí nút báo cáo
Theo mặc định, nút báo cáo thông tin gián đoạn được đặt ở cuối/góc cuối của bản đồ – ở bên phải đối với ngôn ngữ viết từ trái sang phải và ở bên trái đối với ngôn ngữ viết từ phải sang trái. Nếu bạn cần di chuyển nút báo cáo để tạo khoảng trống cho các phần tử trên giao diện người dùng tuỳ chỉnh, hãy sử dụngbottomTrailingButtonsLayoutGuide.
Swift
// Create a new layout guide let topRightLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current reporting button is of fixed height topRightLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 50).isActive = true topRightLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -14).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide // Create an alternate layout guide to use when the header and the footer are not full width let topRightAlternateLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightAlternateLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height topRightAlternateLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 20).isActive = true topRightAlternateLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide
Objective-C
// Create a new layout guide UILayoutGuide *topRightLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide; // Create an alternate layout guide to use when the header and the footer are not full width UILayoutGuide *topRightAlternateLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightAlternateLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightAlternateLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightAlternateLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide;
API Hiển thị lời nhắc (Thử nghiệm)
API Hiển thị lời nhắc giúp bạn tránh xung đột giữa các phần tử trên giao diện người dùng do Navigation SDK tạo và các phần tử trên giao diện người dùng tuỳ chỉnh của riêng bạn bằng cách thêm một trình nghe để nhận lệnh gọi lại trước khi một phần tử trên giao diện người dùng Navigation SDK sắp xuất hiện và ngay khi phần tử đó bị xoá. Bạn có thể nhận lệnh gọi lại cho các phần tử thông tin gián đoạn theo thời gian thực, bao gồm thẻ thông tin, lời nhắc và trình đơn báo cáo thông tin gián đoạn, cũng như cho các thông báo khác do Navigation SDK tạo.Swift
// Additional methods added to GMSNavigatorListener ... func navigatorWillPresentPrompt(_ navigator: GMSNavigator) { // Hide any sort of custom UI element. } func navigatorDidDismissPrompt(_ navigator: GMSNavigator) { // Show any sort of custom UI element. } ...
Objective-C
// Additional methods added to GMSNavigatorListener ... - (void)navigatorWillPresentPrompt:(GMSNavigator *)navigator { // Hide any sort of custom UI element. } - (void)navigatorDidDismissPrompt:(GMSNavigator *)navigator { // Show any sort of custom UI element. } ...