Câu hỏi thường gặp
Thông tin về sản phẩm
- Nên hiển thị thông báo về Điều khoản dịch vụ của Navigation SDK như thế nào?
- Tính năng hướng dẫn bằng giọng nói hỗ trợ những ngôn ngữ nào?
- Các góc phương vị có được duy trì khi người lái thoát khỏi chế độ chỉ đường không?
- Có 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 dành cho thiết bị di động không?
- SDK Điều hướng có thể xác định chỗ đỗ xe gần nhà hàng và các điểm đến khác không?
- SDK Điều hướng có hiển thị hướng lưu thông trên các làn đường khi bạn đến gần một điểm rẽ không?
Vấn đề
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 từng chặng về tuyến đườ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ể 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 tính năng điều hướng không ở nền trước không? - SDK Điều hướng 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 Navigation ở chế độ nền không?
Tuỳ chỉnh giao diện người dùng
- Tôi có thể mã màu cho lựa chọn tuyến đường tốt nhất không?
- SDK điều hướng có thể hiển thị ETA cho đích đến cuối cùng không?
- Làm cách nào để ẩn thông tin cập nhật về ETA?
- Hiện có những cách tuỳ chỉnh giao diện người dùng nào cho thẻ đầu trang và chân trang?
Đ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?
- Tôi có thể cho người lái xe thấy một nhãn khác với vị trí đích mặc định không?
- Tôi có thể sử dụng SDK Điều hướng để theo dõi các độ lệch so với một đường dẫn đã xác định không?
- Người lái có thể thoát khỏi tính năng chỉ đường mà không hoàn thành tuyến đường không?
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ànhYES
. -
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.
Vấn đề
- Trong Xcode 12, ứng dụng không được tạo 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 dự án Xcode và thêm
arm64
vàoExcluded Architectures
chỉ đối với bản dựng "Trình mô phỏng iOS".Để biết thêm thông tin, hãy xem luồng StackOverflow sau đây.
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:
- 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()
. - 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:
- Truy xuất các chân trong hành trình bằng
Navigator.getRouteSegments()
. - Gọi
GMSNavigator.timeToNextDestination
cho mỗi chặng hành trình. - 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.
- 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ó 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 trình nghe cho
GMSRoadSnappedLocationProviderListener
và đặt thuộc tínhallowsBackgroundLocationUpdates
thànhTRUE
. - 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
.- Đặt ngưỡng để xác định tần suất của các lệnh gọi lại.
- 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 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ó. 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
GMSRoadSnappedLocationProvider.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)
.
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:
- 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()
. - Ẩn ETA của điểm tham chiếu hiện tại bằng cách sử dụng
NavigationFragment.setEtaCardEnabled(false)
. - Kết xuất thời gian đến dự kiến cuối cùng.
Trong iOS, hãy sử dụng:
- Gọi cho
GMSNavigator.routeLegs(read)
. - Với chặng cuối cùng, hãy gọi
GMSNavigator.timeToNextDestination
. - Ẩ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. - Kết xuất thời gian đến dự kiến cuối cù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
- 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
.
- Trong Android, hãy sử dụng
-
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ầnsetHeaderEnabled
vàsetFooterEnabled
củaNavigationFragment
.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ínhnavigationFooterEnabled
vànavigationHeaderEnabled
củaGMSUISettings
.
Đ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ênNavigationMap
.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:- Đă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
. - 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à trình nghe của nó để nhận thông báo khi một tuyến thay đổi hoặc một tuyến 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
GMSNavigatorListener
và giao thứcGMSRoadSnappedLocationProviderListener
. - Triển khai
GMSNavigatorListener.navigatorDidChangeRoute
. - Truy cập tuyến mới bằng cách sử dụng các thuộc tính
routeLegs
vàcurrentRouteLeg
củaGMSNavigator
.
- Đă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
-
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ứcsimulateLocationsAlongExistingRoute
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ụngGMSLocationSimulator.simulateLocationsAlongExistingRoute
hoặ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 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.