即使用户设备位置位于同一路线上,导航也会在每次路线进展后不断重新路线。我认为只有当用户离开当前路线时,Mapbox 才会自动处理重新路由。我读完this后文档的一部分,我认为我需要手动处理它。
根据文档,我使用下面的代码来手动处理重新路由,但该代码已弃用。
func navigationViewController(_ navigationViewController: NavigationViewController, shouldRerouteFrom location: CLLocation) -> Bool {
return navigationViewController.routeController.userIsOnRoute(location)
}
所以崩溃将我重定向到 Mapbox SDK 的这一部分
@available(*, deprecated, renamed: "navigationService", message: "NavigationViewController no longer directly manages a RouteController. See MapboxNavigationService, which contains a protocol-bound reference to the RouteController, for more information.")
/// :nodoc: obsoleted
@objc public final var routeController: RouteController! {
get {
fatalError()
}
set {
fatalError()
}
}
但是navigationService
不包含userIsOnRoute
函数。是否有我可以使用的替代功能,或者这是一个错误?
最佳答案
此问题似乎是一个错误。基于@luugiathuy报告如果您将 SDK 更改为以下代码是否可以解决所有问题,语音和重新路由问题
index 47d8132..bc44ed7 100644
--- a/ios/Pods/MapboxCoreNavigation/MapboxCoreNavigation/NavigationService.swift
+++b/ios/Pods/MapboxCoreNavigation/MapboxCoreNavigation/NavigationService.swift
@@ -127,7 +127,7 @@ public protocol NavigationService: CLLocationManagerDelegate, RouterDataSo @objc(MBNavigationService)
public class MapboxNavigationService: NSObject, NavigationService, DefaultInterfaceFlag {
- typealias DefaultRouter = RouteController
+ typealias DefaultRouter = LegacyRouteController
/**
The default time interval before beginning simulation when the `.onPoorGPS` simulation
在MapboxNavigationService中将RouteController
更改为LegacyRouteController
,一切都会按预期工作。
这个问题已经持续了近 4 个月,修改 SDK 并不是一个好主意,但在 Mapbox 解决这个问题之前,这是一个替代解决方案。
关于ios - Mapbox 导航、iOS SDK 中的重新路由问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58898082/