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

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

Vấn đề

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ó Điều khoản SDK điều hướng về Dịch vụ mà mỗi tài xế phải chấp nhận. Hộp thoại này cung cấp cho người lái xe cơ hội đồng ý với Điều khoản dịch vụ. Tệp văn bản chứa các điều khoản được cung cấp cùng với SDK điều hướng.
Trong Android, hãy sử dụng NavigationApi.showTermsAndConditionsDialog để hiển thị hộp thoại có chứa các cụm từ.
Trong iOS, gọi GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName.
Mọi ngôn ngữ được Google Maps dành cho thiết bị di động hỗ trợ sẽ tự động có sẵn cho SDK điều hướng. Một 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 này có quyền truy cập hơn 70 ngôn ngữ.

Có. Trong Android, sau khi bắt đầu, LocationListener tiếp tục sẽ chạy trong nền. Ứng dụng của bạn tiếp tục xác định vị trí và duy trì phương hướng.

Trong iOS, để tiếp tục nhận thông tin cập nhật về vị trí và góc phương vị trong nền, thực hiện chụp ảnh đường và thiết lập allowsBackgroundLocationUpdates thành YES.

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

Không, SDK điều hướng không yêu cầu Google Maps dành cho thiết bị di động được cài đặt trên thiết bị.
Không, SDK điều hướng không cung cấp chức năng này lúc này bất cứ lúc nào.
Đúng vậy. Hướng lưu thông có sẵn và được hiển thị theo mặc định.
SDK điều hướng nào Chỉ khách hàng Dịch vụ di động mới được sử dụng API?

Có một số API trong SDK điều hướng chỉ dành cho khách hàng Dịch vụ di động được Google tính phí trên cơ sở mỗi giao dịch. Nếu bạn không phải là khách hàng Dịch vụ di động, thì các phương thức sau đây không hoạt động:

Vấn đề

Trong Xcode 12, ứng dụng không tạo bản dựng chính xác 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 Cài đặt bản dựng của dự án Xcode rồi thêm arm64 vào Excluded Architectures cho "Trình mô phỏng iOS" chỉ có bản dựng.

Để biết thêm thông tin, hãy xem phần luồng StackOverflow.

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 SDK điều hướng, nhưng dự án của bạn không sử dụng API SDK điều hướng, hãy xoá SDK đó khỏi tệp nhị phân.

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 của mỗi hành trình. Thông tin được lưu trước trong bộ nhớ đệm bao gồm thông tin định tuyến trong 15-20 phút, và các lựa chọn tuyến đường trong trường hợp người lái xe đi chệch khỏi tuyến đường. Chiến lược phát hành đĩa đơn 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ó chế độ ngoại tuyến không?
Không, SDK điều hướng không cung cấp chế độ ngoại tuyến vào lúc này; tuy nhiên, SDK không 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ả điểm dừng/điểm đến trong một hành trình trước khi bắt đầu không? tuyến đường?

Có. Trong Android, để truy xuất thông tin 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 tuyến đường từng chặng ở đầu tuyến đường không?
Đúng vậy. SDK điều hướng cung cấp một 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 phần đầu để xem từng cách 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ề Giờ đế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 cách sử dụng Navigator.getTimeAndDistanceList().
  2. Chuyển tiếp thông tin này đến ứng dụng dưới tên bạn hiện đang áp dụng cho thời gian đến dự kiến của người lái xe.

Trên iOS, hãy làm theo các bước sau để cung cấp thông tin về Giờ đế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 cách sử dụng Navigator.getRouteSegments().
  2. Gọi GMSNavigator.timeToNextDestination cho mỗi chặng của hành trình.
  3. Chuyển tiếp thông tin về thời gian đến ứng dụng khi bạn hiện đang áp dụng cho 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 của người lái xe không? vị trí hiện tại được chụp nếu chỉ đường không ở nền trước?

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

Trong iOS, để tiếp tục chạy điều hướng ở chế độ nền, hãy triển khai trình nghe cho GMSRoadSnappedLocationProviderListener và đặt từ allowsBackgroundLocationUpdates đến 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 của đường và có thể không tập trung vào điểm chính xác mà người lái xe đang điều hướng.

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 lệnh gọi lại.
  2. Hãy kiểm tra quãng đường còn lại tới điểm đến.

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

Trên 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 Chỉ đường chạy trong 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 cho phép thông báo.

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

Để tắt tính năng xử lý 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ể tô màu mã lựa chọn tuyến đường tốt nhất không?
Không. Mã hoá bằng màu cho một tuỳ chọn tuyến đường cụ thể không được hỗ trợ tại thời điểm này.
SDK điều hướng có thể hiển thị giờ đế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 tham chiế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 cuối cùng.

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

  1. Gọi cho GMSNavigator.routeLegs(read).
  2. Ở chặng cuối, 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 sử dụng MSMapView.settings.navigationFooterEnabled=NO thành FALSE.
  4. Hiển thị 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ề thời gian đến dự kiến?

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

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

Trong Android, bạn dùng StylingOptions để đặt nền định kiểu màu. Để ẩn hoặc hiển thị tiêu đề và chân trang, hãy sử dụng setHeaderEnabled và Hàm thành phần setFooterEnabled 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 thị đầu trang và chân trang sử dụng navigationFooterEnablednavigationHeaderEnabled thuộc tính của GMSUISettings.

Đang định tuyến

Tôi có thể cung cấp một tuyến đường cụ thể không cho người lái xe hoặc xoá tuyến đường thay thế?
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í," cho yêu cầu của bạn. Việc thêm điểm tham chiếu cũng ảnh hưởng đến tuyến đường.
Tôi có thể hiển thị cho người dùng ứng dụng một nhãn cho đích đến khác với nhãn mặc định không? vị trí đích?

Có. Trong Android, hãy tạo một Marker có phần tử tiêu đề tuỳ chỉnh cho điểm đến và vĩ độ/kinh độ. Chiến lược phát hành đĩa đơn SDK điều hướng 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ể sử dụng SDK điều hướng để theo dõi các sai lệch so với một đường dẫn đã 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 để cập nhật thông tin 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 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 đúng tuyến đường quy định.

Trong iOS, hãy dùng GMSNavigator và trình nghe để 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 điều khiển chế độ xem của bản đồ, hãy triển khai GMSNavigatorListener và giao thức GMSRoadSnappedLocationProviderListener.
  2. Triển khai GMSNavigatorListener.navigatorDidChangeRoute.
  3. Truy cập tuyến đường mới bằng cách sử dụng routeLegs và Các thuộc tính currentRouteLeg của GMSNavigator.
Người lái xe có thể thoát khỏi chế độ chỉ đường mà không hoàn thành tuyến đường không?

Có. Trong Android, hãy gọi phương thức Navigator.stopGuidance() để ngừng đ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ợ thay đổi tuyến đường không?

Có. Trong Android, hãy gọi simulateLocationsAlongNewRoute tới mô phỏng một hành trình có thay đổi tuyến đường. simulateLocationsAlongExistingRoute phương thức 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 bạn không dự đoán 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ảnh điều hướng?

Thông báo điều hướng vẫn hiển thị trong khi điều hướng. khi hoạt động này bị đóng. Khi xe đến điểm đến, điều hướng dừng và thông báo 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 để gọi lại Hoạt động khi người dùng ứng dụng nhấp vào thông báo.