Câu hỏi thường gặp

Thông tin về sản phẩm

Mạng

Dữ liệu

Tuỳ chỉnh giao diện người dùng

Đang định tuyến

Trình mô phỏng

Quy trình công việc

Thông tin về sản phẩm

Ứng dụng của bạn phải triển khai một hộp thoại có thông báo Điều khoản dịch vụ của SDK Điều hướng mà mỗi người lái xe phải chấp nhận. Hộp thoại này giúp người lái xe có cơ hội đồng ý với Điều khoản dịch vụ. Tệp văn bản của các điều khoản được cung cấp cùng với SDK điều hướng.
Trong Android, hãy dùng phương thức NavigationApi.showTermsAndConditionsDialog để hiển thị hộp thoại chứa các điều khoản.
Trong iOS, hãy gọi hàm GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName.
Mọi ngôn ngữ được Google Maps trên thiết bị di động hỗ trợ đều tự động có sẵn cho SDK Điều hướng. Thiết bị có ngôn ngữ hệ thống mặc định và ứng dụng không thể thay đổi chế độ cài đặt đó; tuy nhiên, ứng dụng có quyền truy cập vào hơn 70 ngôn ngữ.

Có. Trong Android, sau khi khởi động, LocationListener sẽ tiếp tục chạy ở chế độ nền. Ứng dụng của bạn sẽ tiếp tục đường chụp nhanh vị trí và duy trì góc phương vị.

Trong iOS, để tiếp tục nhận thông tin cập nhật về vị trí và góc phương vị ở chế độ nền, hãy triển khai tính năng chụp nhanh đường và đặt allowsBackgroundLocationUpdates thành YES.

Có. Khi một tuyến được tạo hoặc thay đổi, RouteChangeListener sẽ cung cấp các hình nhiều đường.

Không, SDK Điều hướng không yêu cầu cài đặt Google Maps trên thiết bị di động trên thiết bị.
Không, SDK điều hướng hiện không cung cấp chức năng này.
Có. Hướng lưu thông có sẵn và được hiển thị theo mặc định.

Mạng

SDK Điều hướng xử lý kết nối kém như thế nào?
SDK Điều hướng sẽ lưu trước tuyến đường vào bộ nhớ đệm cho mỗi hành trình. Thông tin được lưu trước vào bộ nhớ đệm bao gồm thông tin định tuyến trong vòng 15 đến 20 phút và các phương án thay thế về tuyến đường trong trường hợp người lái xe đi chệch khỏi tuyến đường. SDK điều hướng ước chừng vị trí bằng cách sử dụng GPS và các cảm biến của thiết bị.
Có chế độ ngoại tuyến không?
Không, SDK Điều hướng hiện không cung cấp chế độ ngoại tuyến. Tuy nhiên, SDK có cung cấp thông tin được lưu trước trong bộ nhớ đệm cho một hành trình.

Dữ liệu

Tôi có thể truy xuất tất cả các điểm dừng/điểm đến trong một hành trình trước khi bắt đầu một tuyến đường không?

Có. Trong Android, để truy xuất thông tin đường đi cho một tuyến đường, hãy gọi Navigator.getRouteSegments().

Trong iOS, hãy gọi GMSNavigator.routeLegs(read).

Có hướng dẫn tuyến đường từng chặng ở đầu tuyến đường không?
Có. SDK điều hướng cung cấp danh sách các đoạn tuyến. Ngoài ra, người lái xe có thể vuốt qua thẻ chỉ đường trong tiêu đề để xem từng thao tác.
ETA được thông báo cho người dùng ứng dụng như thế nào?

Trong Android, hãy làm theo các bước sau để cung cấp thông tin về thời gian đến dự kiến cho người dùng ứng dụng:

  1. Truy xuất thời gian và khoảng cách cho tất cả các điểm tham chiếu bằng Navigator.getTimeAndDistanceList().
  2. Hãy chuyển tiếp thông tin này đến ứng dụng như bạn đang làm với thời gian đến dự kiến của người lái xe.

Trong iOS, hãy làm theo các bước sau để cung cấp thông tin về thời gian đến dự kiến cho người dùng ứng dụng:

  1. Truy xuất các chân trong hành trình bằng Navigator.getRouteSegments().
  2. Gọi GMSNavigator.timeToNextDestination cho mỗi chặng hành trình.
  3. Chuyển tiếp thông tin thời gian đến ứng dụng như bạn hiện đang làm với thời gian đến dự kiến của người lái xe.
Có thể sử dụng RoadSnappedLocationProvider để lấy thông tin vị trí chụp nhanh hiện tại của người lái xe nếu hoạt động điều hướng không ở nền trước không?

Có. Trong Android, RoadSnappedLocationProvider chạy ở chế độ nền theo mặc định.

Trong iOS, để tiếp tục điều hướng ở chế độ nền, hãy triển khai uỷ quyền cho GMSRoadSnappedLocationProviderDelegate và đặt thuộc tính allowsBackgroundLocationUpdates thành TRUE.

SDK Điều hướng có hỗ trợ tính năng khoanh vùng địa lý không?

Không. Trong ngữ cảnh điều hướng, remainingTimeOrdistanceChangeListener có lợi thế hơn so với khoanh vùng địa lý đơn giản. Khoanh vùng địa lý có thể không tính đến hình học đường và có thể không căn giữa trên điểm chính xác mà người lái xe đang di chuyển.

Bạn có thể ước chừng chức năng này bằng remainingTimeOrdistanceChangeListener.

  1. Đặt ngưỡng để xác định tần suất của các lệnh gọi lại.
  2. Kiểm tra quãng đường còn lại đến điểm đến.

Ví dụ: nếu đặt ngưỡng thành 100 m, bạn sẽ nhận được lệnh gọi lại khi khoảng cách đến đích đến thay đổi 100 m. Khi khoảng cách giảm xuống, bạn có thể cập nhật ngưỡng này thành một giá trị nhỏ hơn và nhận được các lệnh gọi lại thường xuyên hơn. Sau đó, hãy kiểm tra quãng đường còn lại để xác định xem bạn có ở đủ gần vị trí đón khách/trả xe hay không.

Trong iOS, hãy triển khai uỷ quyền GMSNavigatorDelegate.didUpdateRemainingDistance để quản lý khoảng cách giữa các thông báo.

Tôi có thể tắt thông báo khi ứng dụng Điều hướng ở chế độ nền không?

Có. Trong Android, hãy sử dụng Navigator.setHeadsUpNotificationEnabled để kiểm soát thông báo. Phương thức này có một đối số boolean. FALSE tắt thông báo; TRUE bật thông báo.

Trong iOS, hãy tắt thông báo trong nền cho các vị trí bị chụp đường bằng cách đặt GMSRoadSnappedLocationProviderDelegate.allowsBackgroundLocationUpdates thành KHÔNG.

Để tắt tính năng xử lý trong nền cho các thông báo vị trí khác, hãy gọi GMSNavigator.sendsBackgroundNotifications(NO).

Trình ghi giao dịch theo dõi các lượt đến lấy hàng và bỏ ngang bằng một mã nhận dạng duy nhất mà Google ghi lại cho mục đích thanh toán. Để biết thêm thông tin, hãy xem Hướng dẫn kiểm thử triển khai dành cho nền tảng của bạn:

Để biết thông tin về các khía cạnh lập trình của giao dịch thanh toán, hãy xem phần Giao dịch có thể lập hoá đơn.

Tuỳ chỉnh giao diện người dùng

Tôi có thể đánh dấu bằng màu để lựa chọn tuyến đường tốt nhất không?
Không. Hiện tại, chúng tôi không hỗ trợ việc lập trình bằng màu cho một tùy chọn tuyến đường cụ thể.
SDK điều hướng có thể hiển thị ETA cho điểm đến cuối cùng không?

Có. Trong Android, hãy sử dụng các phương thức sau:

  1. Truy xuất thời gian và khoảng cách cho tất cả các điểm tham chiếu bằng Navigator.getTimeAndDistanceList().
  2. Ẩn ETA của điểm tham chiếu hiện tại bằng cách sử dụng NavigationFragment.setEtaCardEnabled(false).
  3. Kết xuất thời gian đến dự kiến cuối cùng.

Trong iOS, hãy sử dụng:

  1. Gọi cho GMSNavigator.routeLegs(read).
  2. Với chặng cuối cùng, hãy gọi GMSNavigator.timeToNextDestination.
  3. Ẩn ETA của điểm tham chiếu hiện tại bằng cách sử dụng MSMapView.settings.navigationFooterEnabled=NO thành FALSE.
  4. Kết xuất thời gian đến dự kiến cuối cùng.
Làm cách nào để ẩn thông tin cập nhật về ETA?

Bạn có thể tắt thẻ ETA bằng các phương thức sau:

  • Trong Android, hãy sử dụng navigationView.setEtaCardEnabled(false).
  • Trong iOS, hãy sử dụng GMSMapView.settings.navigationFooterEnabled=NO.
Các tuỳ chỉnh giao diện người dùng nào hiện có cho thẻ tiêu đề và chân trang?

Trong Android, bạn dùng StylingOptions để đặt kiểu màu nền. Để ẩn hoặc hiện tiêu đề và chân trang, hãy sử dụng các hàm thành phần setHeaderEnabledsetFooterEnabled của NavigationFragment.

Trong iOS, hãy sử dụng GMSMapView.settings.navigationHeaderPrimaryBackgroundColor để đặt kiểu màu nền. Để ẩn hoặc hiện đầu trang và chân trang, hãy sử dụng các thuộc tính navigationFooterEnablednavigationHeaderEnabled của GMSUISettings.

Đang định tuyến

Tôi có thể cung cấp tuyến đường cụ thể cho tài xế hoặc xoá tuyến đường thay thế không?
Không. Theo mặc định, hệ thống sẽ cung cấp nhiều tuyến đường và tuyến đường nhanh nhất sẽ có mức độ ưu tiên. Bạn có thể tác động đến tuyến đường mặc định bằng cách thêm các lựa chọn ưu tiên, chẳng hạn như "tránh đường cao tốc và trạm thu phí" vào yêu cầu của mình. Việc thêm điểm tham chiếu cũng ảnh hưởng đến tuyến đường.
Tôi có thể cho người dùng ứng dụng thấy một nhãn cho vị trí đích khác với vị trí đích mặc định không?

Có. Trong Android, hãy tạo một Marker với tiêu đề tuỳ chỉnh cho điểm đến và vĩ độ/kinh độ. SDK điều hướng hiển thị tiêu đề tuỳ chỉnh và toạ độ trên NavigationMap.

Trong iOS, bạn sẽ tạo và hiển thị một GMSMarker cho đích đến.

Tôi có thể sử dụng SDK Điều hướng để theo dõi độ lệch so với một đường dẫn đã xác định không?

Có. Trong Android, hãy dùng Navigator.setRouteChangedListener để nhận thông báo khi một tuyến đường thay đổi hoặc một tuyến đường mới được đề xuất:

  1. Đăng ký một trình nghe để kiểm tra vị trí thiết bị dọc theo tuyến đường bằng phương thức Navigator.setRouteChangedListener.
  2. Thêm mã vào trình xử lý sự kiện gọi lại, onRouteChanged:
    • Gửi tin nhắn cho người dùng ứng dụng kèm theo thời gian đến dự kiến (ETA) và thông tin về quãng đường mới.
    • Theo dõi vị trí của thiết bị.
    • [Không bắt buộc] Thêm chức năng khác mà ứng dụng của bạn yêu cầu để xử lý khi người lái xe không đi theo tuyến đường quy định.

Trong iOS, hãy sử dụng GMSNavigator và người được uỷ quyền để nhận thông báo khi tuyến đường thay đổi hoặc đề xuất một tuyến mới:

  1. Trên bộ điều khiển chế độ xem của bản đồ, hãy triển khai giao thức GMSNavigatorDelegate và giao thức GMSRoadSnappedLocationProviderDelegate.
  2. Triển khai GMSNavigatorDelegate.navigatorDidChangeRoute.
  3. Truy cập tuyến mới bằng cách sử dụng các thuộc tính routeLegscurrentRouteLeg của GMSNavigator.
Người lái xe có thể thoát khỏi chế độ chỉ đường mà không hoàn tất tuyến đường không?

Có. Trong Android, hãy gọi phương thức Navigator.stopGuidance() để dừng quá trình điều hướng.

Trong iOS, hãy gọi GMSNavigator.clearDestinations.

Trình mô phỏng

Trình mô phỏng có hỗ trợ việc thay đổi tuyến đường không?

Có. Trong Android, hãy gọi simulateLocationsAlongNewRoute để mô phỏng một hành trình có thay đổi tuyến đường. Phương thức simulateLocationsAlongExistingRoute sẽ bỏ qua các thay đổi đối với tuyến hiện có.

Trong iOS, hãy sử dụng GMSLocationSimulator.simulateAlongNewRouteToDestinations để mô phỏng một hành trình có thay đổi tuyến đường. Nếu không dự đoán có thay đổi nào về tuyến, bạn có thể sử dụng GMSLocationSimulator.simulateLocationsAlongExistingRoute hoặc GMSLocationSimulator.simulateAlongNewRouteToDestinations.

Quy trình công việc

Làm cách nào để đóng thông báo sau khi đóng một hoạt động chứa mảnh điều hướng?

Thông báo chỉ đường vẫn hiển thị trong khi điều hướng khi hoạt động bị đóng. Khi xe đến điểm đến, tính năng chỉ đường sẽ dừng lại và thông báo sẽ biến mất.

Để xử lý các lượt nhấp vào thông báo, hãy sử dụng Navigator.startGuidance(intent resumeIntent). resume intent sẽ kích hoạt khi người dùng ứng dụng nhấp vào thông báo đó. Thông thường, Navigator.startguidance(getIntent()) được gọi từ Hoạt động chính. Hoạt động này sẽ ghi nhớ Hoạt động khi người dùng ứng dụng nhấp vào thông báo.