Câu hỏi thường gặp
Chi tiết sản phẩm
- Thông báo về Điều khoản dịch vụ của Navigation SDK phải xuất hiện như thế nào?
- Hướng dẫn bằng giọng nói hỗ trợ những ngôn ngữ nào?
- Hướng có được duy trì khi người lái xe thoát khỏi chế độ thao tác không?
- Có thể dùng hình nhiều đường khi bắt đầu hoặc thay đổi tuyến đường không?
- Người dùng ứng dụng có cần cài đặt Google Maps trên thiết bị di động không?
- Navigation SDK có thể xác định bãi đỗ xe gần nhà hàng và các điểm đến khác không?
- Navigation SDK có hiển thị hướng lưu thông trong các làn đường khi đến gần một điểm rẽ không?
Vấn đề
- Trong Xcode 12, ứng dụng không 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?
GMSMapViewkhông tải được.
Mạng
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 tuyến đường không?
- Có hướng dẫn chỉ đường từng chặng khi bắt đầu một tuyến đường không?
- Thời gian đến dự kiến (ETA) được thông báo cho người dùng ứng dụng như thế nào?
- 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? - Navigation SDK có hỗ trợ tính năng khoanh vùng địa lý không?
- Tôi có thể tắt thông báo khi ứng dụng Chỉ đường ở chế độ nền không?
Tuỳ chỉnh giao diện người dùng
- Tôi có thể dùng mã màu cho lựa chọn tuyến đường tối ưu không?
- Navigation SDK có thể cho biết thời gian đến dự kiến của điểm đến cuối cùng không?
- Làm cách nào để ẩn thông tin cập nhật về thời gian đến dự kiến?
- Những nội dung tuỳ chỉnh giao diện người dùng nào có sẵn cho thẻ tiêu đề và chân trang?
Định tuyến
- Tôi có thể cung cấp một tuyến đường cụ thể cho người lái xe hoặc xoá các tuyến đường thay thế không?
- Tôi có thể cho người lái xe xem một nhãn khác cho đích đến thay vì vị trí đích đến mặc định không?
- Tôi có thể sử dụng SDK chỉ đường để theo dõi các trường hợp đi lệch khỏi tuyến đường đã xác định không?
- 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?
- Navigation SDK có hỗ trợ định tuyến và chỉ đường cho xe tải và xe cỡ lớn không?
Trình mô phỏng
Quy trình công việc
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 Dịch vụ di chuyển?
- 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?
- Khách hàng sử dụng Dịch vụ di động phải trả phí như thế nào cho Navigation SDK?
- Những API nào của SDK Điều hướng chỉ dành cho khách hàng sử dụng Dịch vụ di chuyển?
- 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?
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 tài xế phải chấp nhận. Hộp thoại này cho phép người lái xe đồ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 Navigation SDK.
- Trong Android, hãy sử 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
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName. - Mọi ngôn ngữ được Google Maps dành cho thiết bị di động hỗ trợ đều tự động được cung cấp 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,
LocationListenersẽ tiếp tục chạy trong nền. Ứng dụng của bạn tiếp tục bám đườ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
allowsBackgroundLocationUpdatesthànhYES. -
Có. Khi một tuyến đường được tạo hoặc thay đổi,
RouteChangeListenersẽ 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, ứ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 (Chế độ cài đặt bản dựng) của dự án Xcode và thêm
arm64vàoExcluded Architectureschỉ 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 thảo luận này trên 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 Nav SDK nhưng dự án của bạn không dùng API Nav SDK, hãy xoá SDK này 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 này 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/điểm đế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 đườ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 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, người lái xe có thể vuốt 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ề ETA cho người dùng ứng dụng:
- 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(). - Chuyển tiếp thông tin này đến ứng dụng khách như bạn làm đối với thời gian dự kiến đến của tài xế.
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:
- Truy xuất các chân trong hành trình bằng cách sử dụng
Navigator.getRouteSegments(). - Gọi
GMSNavigator.timeToNextDestinationcho từng chặng của hành trình. - Chuyển tiếp thông tin 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.
- 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
-
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,
RoadSnappedLocationProviderchạy ở chế độ nền theo mặc định.Trong iOS, để duy trì hoạt động của tính năng chỉ đường ở chế độ nền, hãy triển khai trình nghe cho
GMSRoadSnappedLocationProviderListenervà đặt thuộc tínhallowsBackgroundLocationUpdatesthànhTRUE. - Navigation SDK có hỗ trợ tính năng khoanh vùng địa lý không?
-
Không. Trong bối cảnh điều hướng,
remainingTimeOrdistanceChangeListenercó 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.- Đặt ngưỡng để xác định tần suất của các lệnh gọi lại.
- 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, 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. 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 quãng đường còn lại để xác định xem bạn có đủ gần vị trí đón/trả khách hay không.
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.FALSEtắt thông báo;TRUEbật thông báo.Trong iOS, hãy tắt thông báo ở chế độ nền cho các vị trí được điều chỉnh theo đường bằng cách đặt
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdatesthành NO.Để 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).
Tuỳ chỉnh giao diện người dùng
- Tôi có thể mã hoá màu cho tuyến đường phù hợp nhất không?
- Không. Hiện tại, chúng tôi không hỗ trợ việc 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:
- Truy xuất thời gian và khoảng cách cho tất cả điểm tham chiếu bằng cách sử dụng
Navigator.getTimeAndDistanceList(). - Ẩ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). - 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:
- Gọi
GMSNavigator.routeLegs(read). - Với chặng cuối, hãy gọi
GMSNavigator.timeToNextDestination. - Ẩn ETA của điểm tham chiếu hiện tại bằng cách đặt
MSMapView.settings.navigationFooterEnabled=NOthành FALSE. - Hiển thị thời gian đến dự kiến của điểm đến cuối cùng.
- Truy xuất thời gian và khoảng cách cho tất cả điểm tham chiếu bằng cách sử dụ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 thức sau:
- Trong Android, hãy dùng
navigationView.setEtaCardEnabled(false). - Trên iOS, hãy dùng
GMSMapView.settings.navigationFooterEnabled=NO.
- Trong Android, hãy dùng
-
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ênsetHeaderEnabledvàsetFooterEnabledcủaNavigationFragment.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 sử dụng các thuộc tínhnavigationFooterEnabledvànavigationHeaderEnabledcủaGMSUISettings.
Định tuyến
- Tôi có thể cung cấp một tuyến đường cụ thể cho người lái xe 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 đích đến so với vị trí đích đến mặc định không?
-
Có. Trong Android, hãy tạo một
Markercó tiêu đề tuỳ chỉnh cho đích đến và vĩ độ/kinh độ. Navigation SDK hiển thị tiêu đề tuỳ chỉnh và toạ độ trênNavigationMap.Trong iOS, bạn tạo và hiển thị
GMSMarkercho đích đến. - Tôi có thể sử dụng SDK điều hướng để theo dõi độ lệch khỏi tuyến đường đã 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:- Đă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. - 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 mới 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
GMSNavigatorvà trình nghe của lớp này để nhận thông báo khi tuyến đường thay đổi hoặc khi có tuyến đường mới được đề xuất:- Trên bộ điều khiển chế độ xem của bản đồ, hãy triển khai giao thức
GMSNavigatorListenervà giao thứcGMSRoadSnappedLocationProviderListener. - Triển khai
GMSNavigatorListener.navigatorDidChangeRoute. - Truy cập vào tuyến mới bằng cách sử dụng các thuộc tính
routeLegsvàcurrentRouteLegcủaGMSNavigator.
- Đă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
-
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. - Navigation SDK có hỗ trợ định tuyến và chỉ đường cho xe tải và xe cỡ lớn không?
-
Có. Với tính năng định tuyến cho xe cỡ lớn (LVR), bạn có thể truyền mã thông báo tuyến đường dành riêng cho xe tải do Routes API hoặc Route Optimization API tạo cho Navigation SDK. SDK này cung cấp tính năng chỉ đường từng chặng kèm theo chú thích về tuyến đường (chiều cao, trọng lượng, vật liệu nguy hiểm và các quy định hạn chế đối với xe tải) và duy trì hồ sơ vật lý của xe trong quá trình đổi tuyến đường linh động. Để biết thông tin chi tiết, hãy xem bài viết Di chuyển theo tuyến đường dành cho xe lớn.
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để mô phỏng một hành trình có thay đổi tuyến đường. Phương thứcsimulateLocationsAlongExistingRoutebỏ 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ụngGMSLocationSimulator.simulateLocationsAlongExistingRoutehoặcGMSLocationSimulator.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 đích, 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 intentsẽ 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
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 động, 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.v. Navigation SDK cũng được 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ề Mobility Services.
Các sản phẩm di động chỉ dành 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.
ReportBillableEvent trong mã của bạn. Chỉ khách hàng của Dịch vụ di chuyển mới được gọi phương thức ReportBillableEvent.
Có một số API trong SDK Điều hướng chỉ dành cho khách hàng sử dụng Dịch vụ di động, những người đượ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:
Có, khách hàng của Mobility Services có thể sử dụng cả các triển khai Mobility Services và các triển khai không phải Mobility Services của Navigation SDK. Tuy nhiên, bạn chỉ có thể sử dụng một loại phương thức triển khai trong một ứng dụng tại một thời điểm. Bạn cũng cần tạo một dự án trên đám mây của 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 với việc triển khai Dịch vụ hỗ trợ di chuyển. Để 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à Dịch vụ di chuyển, 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 nhân viên phụ trách khách hàng của Google.
Lưu ý: Nếu bạn không phải là khách hàng của Dịch vụ di động và muốn tìm hiểu thêm về bộ API và SDK của Dịch vụ di động, hãy liên hệ với nhóm bán hàng của Google Maps Platform.