iOS SDK中的Mapbox导航,重新路由问题

问题描述 投票:0回答:1

即使用户设备位置在同一条路线上,导航也会在每条路线前进后不断不断地重新路由。我认为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功能。我是否可以使用其他功能,或者这是一个错误?

ios routing sdk navigation mapbox
1个回答
0
投票

我们的团队急于在7天内发布我们的应用,因此我们找到了另一种解决方案,至少可以减少重新路由呼叫。

因此,我们假设currentStepProgress.distanceRemaining返回设备位置与当前步骤位置的终点之间的距离,在这种情况下,我们可以通过如下设置极限来识别驾驶员是否朝错误的方向前进>>

func navigationViewController(_ navigationViewController: NavigationViewController, shouldRerouteFrom location: CLLocation) -> Bool {

    return navigationViewController.navigationService.routeProgress.currentLegProgress.currentStepProgress.distanceRemaining > 500
}

在这种情况下,如果distanceRemaining返回超过500m,我们假设驱动程序距离实际路径越来越远,我们让SDK调用重新路由api以获取新路线。

但是请来自MAPBOX的任何人看到此问题都会为我们提供正确的答案,因为我们是付费用户,并且我们依赖于mapbox导航。

© www.soinside.com 2019 - 2024. All rights reserved.