ios - iOS SDK 中的 Mapbox 导航、重新路由问题
问题描述
即使用户设备位置在同一条路线上,导航也会在每条路线进展后不断重新路由。我认为 Mapbox 只有在用户离开当前路线时才会自动处理重新路由。在我阅读了这部分文档后,我认为我需要手动处理它。
根据文档,我使用以下代码手动处理重新路由,但不推荐使用该代码。
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 修复这个问题。
推荐阅读
- reactjs - Expo Developer Tools 与 Expo CLI 断开连接。使用 expo start 命令再次启动 CLI
- r - 如何在没有空格或破折号的字母字符串中重复每个字母的字符串连接?
- java - 下载的 Eclipse 包中没有服务器选项
- clojure - 从更长的序列中获取部分序列clojure
- c - 在 Linux 中通过 IPC 使用共享内存创建的缓冲区
- angular - Angular - 自动运行命令以添加外部包
- fish - 不,我无法将我的默认外壳更改为鱼外壳
- java - 对如何实现 ArrayList 感到困惑
- redux - 转换实体/标准化响应
- python - 递归如何跟踪答案?