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

Chi tiết sản phẩm

Vấn đề

Mạng

Dữ liệu

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

Định tuyến

Trình mô phỏng

Quy trình công việc

Dịch vụ hỗ trợ di chuyển

Chi tiết 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 về Điều khoản dịch vụ của Navigation SDK mà mỗi người lái xe phải chấp nhận. Hộp thoại này cho phép tài xế đồng ý với Điều khoản dịch vụ. Một tệp văn bản chứa các điều khoản được cung cấp cùng với Navigation SDK.
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.
Trên iOS, hãy gọi GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName.
Mọi ngôn ngữ mà Google Maps trên thiết bị di động hỗ trợ đều tự động có sẵn cho Navigation SDK. 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 bắt đầu, LocationListener sẽ tiếp tục chạy ở chế độ nền. Ứng dụng của bạn tiếp tục điều chỉnh vị trí cho khớp với đường và duy trì hướng đi.

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

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

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

Vấn đề

Trong Xcode 12, các ứng dụng không được tạo đúng cách cho trình mô phỏng. Làm cách nào để khắc phục vấn đề này?

Để khắc phục vấn đề này, hãy mở phần Build Settings (Cài đặt bản dựng) của dự án Xcode rồi thêm arm64 vào Excluded Architectures chỉ cho các bản dựng "iOS Simulator" (Trình mô phỏng iOS).

Để biết thêm thông tin, hãy xem chuỗi StackOverflow sau đây.

GMSMapView không tải.

Nếu GMSMapView không tải:

  • Kiểm tra để đảm bảo bạn đã bật NavSDK trong Cloud Console.
  • Nếu bạn đã cài đặt Nav SDK nhưng dự án của bạn không dùng API Nav SDK, hãy xoá SDK đó khỏi tệp nhị phân.

Mạng

Navigation SDK xử lý tình trạng kết nối kém như thế nào?
Navigation SDK lưu trước vào bộ nhớ đệm tuyến đường cho mỗi hành trình. Thông tin được lưu vào bộ nhớ đệm trước bao gồm thông tin định tuyến trong 15 đến 20 phút và các tuyến đường thay thế trong trường hợp người lái xe đi lệch khỏi tuyến đường. Navigation SDK ước tính vị trí bằng cách sử dụng GPS và các cảm biến trên thiết bị.
Có chế độ ngoại tuyến không?
Không, Navigation SDK 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 vào bộ nhớ đệm trước 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/đích đến trong một hành trình trước khi bắt đầu tuyến đường không?

Có. Trong Android, để truy xuất chỉ đường 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 chỉ đường từng chặng khi bắt đầu một tuyến đường không?
Có. Navigation SDK cung cấp danh sách các đoạn đường. Ngoài ra, tài xế 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 đánh dấu bằng cách sử dụng Navigator.getTimeAndDistanceList().
  2. Chuyển tiếp thông tin này đến ứng dụng khách như bạn làm đối với ETA 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 dự kiến đến cho người dùng ứng dụng:

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

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

Trong iOS, để duy trì hoạt động của chế độ chỉ đường ở chế độ nền, hãy triển khai trình nghe cho GMSRoadSnappedLocationProviderListener và đặt thuộc tính allowsBackgroundLocationUpdates thành TRUE.

Navigation SDK có hỗ trợ tính năng hàng rào địa lý không?

Không. Trong bối cảnh điều hướng, remainingTimeOrdistanceChangeListener có lợi thế hơn so với khoanh vùng địa lý. Hàng rào địa lý có thể không tính đến hình dạng đường và có thể không nằm ở chính xác điểm mà người lái xe đang di chuyển đến.

Bạn có thể ước chừng chức năng này bằng cách sử dụ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 khoảng cách còn lại đến điểm đến.

Ví dụ: nếu bạn đặt ngưỡng là 100 mét, bạn sẽ nhận được một lệnh gọi lại khi khoảng cách đến đích đến thay đổi 100 mét. Khi khoảng cách giảm, 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 khoảng cách còn lại để xác định xem bạn đã đến gần vị trí đón/trả khách hay chưa.

Trong iOS, hãy triển khai trình nghe GMSNavigatorListener.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ó. Trên Android, hãy 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 ở chế độ nền cho các vị trí được khớp với đường bằng cách đặt GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates thành NO.

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

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

Tôi có thể mã hoá màu cho lựa chọn tuyến đường tốt nhất không?
Không. Hiện tại, chúng tôi chưa hỗ trợ tính năng mã hoá màu cho một lựa chọn tuyến đường cụ thể.
Navigation SDK có thể cho biết thời gian đến dự kiến 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 đánh dấu bằng cách sử dụng Navigator.getTimeAndDistanceList().
  2. Ẩn thời gian đến dự kiến của điểm tham chiếu hiện tại bằng cách sử dụng NavigationFragment.setEtaCardEnabled(false).
  3. Hiển thị thời gian đến dự kiến của điểm đến cuối cùng.

Trong iOS, hãy sử dụng nội dung sau:

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

Bạn có thể tắt thẻ thời gian đến dự kiến bằng các phương thức sau:

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

Trong Android, bạn sử 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 viên setHeaderEnabledsetFooterEnabled của NavigationFragment.

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

Định tuyến

Tôi có thể cung cấp một tuyến đường cụ thể cho tài xế hoặc xoá các 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 ưu tiên. Bạn có thể ảnh hưở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à đường có 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 khác cho vị trí đích so với vị trí đích mặc định không?

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

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

Tôi có thể dùng Navigation SDK để theo dõi những điểm khác biệt so với một đường đi đã xác định không?

Có. Trong Android, hãy sử 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í của 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ông tin cập nhật về thời gian đến dự kiến và khoảng cách.
    • Theo dõi vị trí của thiết bị.
    • [không bắt buộc] Thêm các chức năng khác mà ứng dụng của bạn cần để xử lý khi người lái xe đi sai lộ trình được chỉ định.

Trong iOS, hãy sử dụng GMSNavigator và các trình nghe của nó để 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. Trên trình kiểm soát khung hiển thị của bản đồ, hãy triển khai giao thức GMSNavigatorListener và giao thức GMSRoadSnappedLocationProviderListener.
  2. Triển khai GMSNavigatorListener.navigatorDidChangeRoute.
  3. Truy cập vào tuyến đường 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 chỉ đường.

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

Trình mô phỏng

Trình mô phỏng có hỗ trợ các thay đổi về 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 về tuyến đường. Phương thức simulateLocationsAlongExistingRoute bỏ qua các thay đổi đối với tuyến đường hiện có.

Trong iOS, hãy sử dụng GMSLocationSimulator.simulateAlongNewRouteToDestinations để mô phỏng một hành trình có thay đổi về tuyến đường. Nếu không dự đoán được bất kỳ thay đổi nào về tuyến đường, 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 có chứa một mảnh điều hướng?

Thông báo chỉ đường vẫn xuất hiện trong quá trình chỉ đường, khi hoạt động bị đóng. Khi xe đến điểm đến, chế độ chỉ đường sẽ dừng 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ẽ gọi lại Hoạt động khi người dùng ứng dụng nhấp vào thông báo.

Dịch vụ hỗ trợ di chuyển

Việc sử dụng Navigation SDK có gì khác biệt đối với khách hàng của Mobility Services?

Google Maps Platform Mobility Services cung cấp một bộ API và SDK để hỗ trợ nhu cầu của doanh nghiệp đối với các công ty vận tải và logistics. Đối với khách hàng sử dụng Dịch vụ di chuyển, Navigation SDK thường được dùng cùng với các dịch vụ liên quan để tối ưu hoá tuyến đường, điều phối, theo dõi công việc, phân tích đội xe và nhiều dịch vụ khác. Navigation SDK cũng tính phí theo cách khác đối với khách hàng sử dụng Dịch vụ di động. Để biết thêm thông tin, hãy xem tài liệu về Dịch vụ di động.

Các sản phẩm di động chỉ được cung cấp cho một số khách hàng. Hãy liên hệ với người đại diện bán hàng của bạn để biết thêm thông tin.

Làm cách nào để biết tôi có phải là khách hàng của Mobility Services hay không?
Nếu bạn không chắc liệu mình có đang triển khai Navigation SDK với tư cách là khách hàng của Mobility Services hay không, hãy tìm lệnh gọi ReportBillableEvent trong mã của bạn. Chỉ những khách hàng sử dụng Dịch vụ di động mới nên gọi phương thức ReportBillableEvent.

Khách hàng sử dụng Dịch vụ di chuyển sẽ bị tính phí Navigation SDK như thế nào?
Đối với khách hàng sử dụng Dịch vụ di động, việc lập hoá đơn và định giá cho Navigation SDK phụ thuộc vào thoả thuận dịch vụ mà bạn đã ký kết với Google Maps Platform. Để biết thông tin về cách xác minh rằng việc triển khai Dịch vụ di động của bạn đang được tính phí chính xác, hãy xem phần Xác thực việc tính phí. Để biết thêm thông tin về việc thanh toán cho Dịch vụ di động, hãy liên hệ với người đại diện bán hàng của bạn.

Khách hàng của Dịch vụ di chuyển chỉ nên sử dụng những API Navigation SDK nào?

Navigation SDK có một số API chỉ dành cho khách hàng của Mobility Services. Những khách hàng này sẽ được Google tính phí theo từng giao dịch. Nếu bạn không phải là khách hàng của Dịch vụ di động, thì các phương thức sau đây sẽ không hoạt động:

Nếu là khách hàng của Mobility Services, tôi có thể sử dụng một phiên bản Navigation SDK không phải của Mobility Services không?

Có, khách hàng của Mobility Services có thể sử dụng cả các phương thức triển khai Mobility Services và các phương thức triển khai không phải Mobility Services của Navigation SDK. Tuy nhiên, mỗi lần, bạn chỉ có thể sử dụng một loại triển khai trong một ứng dụng. Bạn cũng cần tạo một dự án Google Cloud, tài khoản thanh toán và khoá API mới, tách biệt với những dự án, tài khoản và khoá mà bạn dùng khi triển khai Dịch vụ di động. Để biết thêm thông tin, hãy xem phần tổng quan về việc thiết lập Navigation SDK.

Để biết thêm thông tin về cách sử dụng một chế độ triển khai Navigation SDK không phải là Mobility Services, bao gồm cả việc di chuyển một ứng dụng từ loại triển khai này sang loại triển khai khác, hãy liên hệ với người đại diện Tài khoản Google của bạn.

Lưu ý: Nếu bạn không phải là khách hàng của Dịch vụ di chuyển và muốn tìm hiểu thêm về bộ API và SDK của Dịch vụ di chuyển, hãy liên hệ với nhóm bán hàng của Google Maps Platform.