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 sẽ 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?
- Có duy trì hướng khi trình điều khiển thoát khỏi chế độ điều hướng không?
- Có thể sử dụng đa tuyến 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 vị trí đỗ 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 trong các làn đường khi đến điểm rẽ không?
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?
GMSMapView
khô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 từng chặng cho tuyến đường ở đầu 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 vị trí chụp nhanh hiện tại của người lái xe nếu tính năng chỉ đườ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 Điều hướng đang chạy ở chế độ nền không?
Tuỳ chỉnh giao diện người dùng
- Tôi có thể mã hoá màu cho tuỳ chọn tuyến đường tốt nhất không?
- Navigation SDK 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ề thời gian đến dự kiến?
- Những tuỳ chỉnh giao diện người dùng nào có sẵn cho thẻ tiêu đề và chân trang?
Đang đị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?
- Tôi có thể hiển thị cho trình điều khiển một nhãn khác cho đích đến không phải là vị trí đích đến mặc định không?
- Tôi có thể sử dụng SDK Điều hướng để theo dõi các điểm sai lệch so với một đường dẫn đã xác định không?
- Người lái xe có thể thoát khỏi tính năng chỉ đường mà không hoàn tất tuyến đường không?
Trình mô phỏng
Quy trình công việc
Dịch vụ hỗ trợ di chuyển
- Khách hàng sử dụng Dịch vụ di động sẽ sử dụng Navigation SDK như thế nào?
- Làm cách nào để biết tôi có phải là khách hàng của Dịch vụ di động hay không?
- Khách hàng sử dụng Dịch vụ di chuyển sẽ được tính phí Navigation SDK như thế nào?
- Khách hàng Dịch vụ di động chỉ nên sử dụng API SDK Điều hướng nào?
- Nếu là khách hàng của Dịch vụ di động, tôi có thể sử dụng cách triển khai SDK chỉ đường không phải của Dịch vụ di động 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 Điều khoản dịch vụ của SDK Điều hướng mà mỗi trình điều khiển 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 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 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ữ mà Google Maps Mobile hỗ trợ sẽ tự động có sẵn cho Navigation SDK. Thiết bị có một 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 tiếp tục chụp nhanh vị trí trên đường và duy trì phương vị.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 chụp đường và đặt
allowsBackgroundLocationUpdates
thànhYES
. -
Có. Khi một tuyến đường được tạo hoặc thay đổi,
RouteChangeListener
sẽ cung cấp các đường đa tuyến. - Không, SDK chỉ đường không yêu cầu bạn phải cài đặt Google Maps dành cho 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ó. Theo mặc định, hướng lưu lượng truy cập sẽ có sẵn và hiển thị.
Vấn đề
- Trong Xcode 12, các ứ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 Build Settings (Cài đặt bản dựng) của dự án Xcode và thêm
arm64
vàoExcluded Architectures
chỉ dành cho các bản dựng "Trình mô phỏng iOS".Để biết thêm thông tin, hãy xem luồng StackOverflow sau.
- GMSMapView không tải.
-
Nếu GMSMapView không tải:
- Kiểm tra để đảm bảo rằng 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
- Navigation SDK xử lý tình trạng kết nối kém như thế nào?
- Navigation SDK lưu trước 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 vòng 15 đến 20 phút và các tuyến đường thay thế trong trường hợp trình điều khiển đ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ảm biến của thiết bị.
- Có chế độ ngoại tuyến không?
- Không, SDK chỉ đường hiện không cung cấp chế độ ngoại tuyến; tuy nhiên, SDK này 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 đườ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 đường đi 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.
- Thời gian đến dự kiến đượ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 trung gian 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 hiện đang làm cho giờ đế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ề ETA cho người dùng ứng dụng:
- Truy xuất các chặng trong hành trình bằng cách sử dụng
Navigator.getRouteSegments()
. - Gọi
GMSNavigator.timeToNextDestination
cho mỗi chặng trong hành trình. - Chuyển tiếp thông tin thời gian đến ứng dụng khách như bạn hiện đang làm cho ETA của trình điều khiển.
- Truy xuất thời gian và khoảng cách cho tất cả các điểm trung gian bằng cách sử dụng
-
Có thể sử dụng
RoadSnappedLocationProvider
để lấy vị trí chụp nhanh hiện tại của người lái xe nếu tính năng chỉ đườ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 chạy tính năng đ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
. - 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,
remainingTimeOrdistanceChangeListener
có lợi thế so với khoanh vùng địa lý đơn giản. Ranh giới địa lý có thể không tính đến hình học đường và có thể không nằm chính giữa đ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
.- Đặt ngưỡng để xác định tần suất của lệnh gọi lại.
- Kiểm tra quãng đường còn lại đến đích.
Ví dụ: nếu đặt ngưỡng là 100m, bạn sẽ nhận được lệnh gọi lại khi khoảng cách đến đích thay đổi 100m. 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 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 đã đủ gần vị trí đón/đưa 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 Chỉ đường đang chạy ở 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 ở chế độ nền cho các vị trí chụp đường bằng cách đặt
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates
thành KHÔNG.Để tắt tính năng xử lý ở chế độ 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 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ợ việc mã hoá màu cho một tuỳ chọn tuyến đường cụ thể.
- Navigation SDK có thể hiển thị ETA cho đích đế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 trung gian bằng cách sử dụng
Navigator.getTimeAndDistanceList()
. - Ẩn ETA của điểm trung gian 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 các lệnh sau:
- 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 trung gian hiện tại bằng cách đặt
MSMapView.settings.navigationFooterEnabled=NO
thà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ả các điểm trung gian bằng cách sử dụ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 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ê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 tiêu đề và chân trang, hãy sử dụng thuộc tínhnavigationFooterEnabled
vànavigationHeaderEnabled
củaGMSUISettings
.
Đang đị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 xa đường cao tốc và đường thu phí" vào yêu cầu của mình. Việc thêm điểm trung gian 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 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
Marker
có tiêu đề tuỳ chỉnh cho đích đế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 tạo và hiển thị
GMSMarker
cho đích đến. - Tôi có thể sử dụng Navigation SDK để theo dõi các điểm 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:- Đăng ký 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 thông báo cho người dùng ứng dụng kèm theo thông tin cập nhật về thời gian đế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 trình điều khiển đi ra khỏi tuyến đường đã chỉ định.
Trong iOS, hãy sử dụng
GMSNavigator
và trình nghe của lớp này để nhận thông báo khi một tuyến thay đổi hoặc đề xuất một tuyến mới:- 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ứcGMSRoadSnappedLocationProviderListener
. - Triển khai
GMSNavigatorListener.navigatorDidChangeRoute
. - Truy cập tuyến mới bằng cách sử dụng thuộc tính
routeLegs
vàcurrentRouteLeg
củaGMSNavigator
.
- Đăng ký 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 đ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
để mô phỏng một hành trình có thay đổi tuyến đường. Phương thứcsimulateLocationsAlongExistingRoute
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ự kiế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 điều hướng vẫn hiển thị trong khi điều hướng, khi hoạt động bị đóng. Khi xe đến đích, tính năng 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
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
Dịch vụ di chuyển của Nền tảng Google Maps cung cấp một bộ sưu tập API và SDK để hỗ trợ nhu cầu của doanh nghiệp đối với các doanh nghiệp vận tải và hậu cần. Đối với khách hàng sử dụng Dịch vụ di động, SDK chỉ đường 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 cho 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 chuyển.
Các sản phẩm di động hiện 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 động 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 Dịch vụ di chuyển. Khách hàng này đượ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 Dịch vụ di động có thể sử dụng cả cách triển khai Dịch vụ di động và không phải Dịch vụ di động của SDK Điều hướng. Tuy nhiên, mỗi lầ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. 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á API mà bạn sử dụng để triển khai Dịch vụ di chuyển. Để biết thêm thông tin, hãy xem tổng quan về cách thiết lập SDK Điều hướng.
Để biết thêm thông tin về cách sử dụng phương thức triển khai SDK Điều hướng không phải Dịch vụ di chuyển, bao gồm cả việc di chuyển ứng dụng từ một loại phương thức triển khai sang một loại phương thức 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 hiệ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ộ sưu tập 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 Nền tảng Google Maps.