3

我正在开发一个在地图上绘制路线的路线导航应用程序。现在我发现每当我使用 Mapbox 模拟器时,路线步骤都不会更新。例如:刚开始导航后,您会看到“100 米后右转”。模拟器右转后,即使模拟器继续执行,您也永远看不到下一步。

我尝试将航点硬编码到代码中。这导致工作路线。我在数据库上设置了路线。我想通过验证两个版本的 JSON 来验证这些路由。我发现 JSON 非常相似,所以我不认为问题会隐藏在那里。

我尝试在代码中设置几个断点来隔离代码失败的地方。我得出的结论是路由步骤没有被更新,因为代码作为保护语句的结果返回。我们的函数:从 NavigationViewController 调用 updateStep()。它调用在保护语句返回的单独文件中定义的函数。

我尝试将 Mapbox 更新为 0.38.0(原为 0.37.0)。

func updateStep(routeProgress: RouteProgress, altStep: RouteStep? = nil) {
        let routeStep = altStep ?? routeProgress.currentLegProgress.currentStep
        print ("RouteProgressService - altStep: \(altStep)")
        let steps = routeProgress.currentLeg.steps
        guard let newStepIndex = steps.index(of: routeStep), newStepIndex > currentStepIndex  else {
            print("return")
            return
        }

我希望代码不会返回并继续执行该函数。虽然由于较新的 routeStep 不大于 currentStepIndex,所以 guard 语句返回。

4

0 回答 0