Как исправить пользовательские шаги маршрута, которые не обновляются в Mapbox iOS - PullRequest
2 голосов
/ 11 октября 2019

Я работаю над приложением навигации по маршруту, которое рисует маршрут на карте. Теперь я обнаружил, что всякий раз, когда я использую симулятор Mapbox, шаги маршрута не обновляются. Например: сразу после запуска навигации вы получите «Поворот направо через 100 метров». После того, как симулятор повернет направо, вы никогда не увидите следующий шаг, хотя симулятор продолжает выполняться.

Я пробовал жестко кодировать путевые точки в коде. Это приводит к рабочему маршруту. У меня есть маршруты, установленные в базе данных. Я хотел проверить эти маршруты, проверяя JSON обеих версий. Я обнаружил, что JSON довольно похожи, поэтому я не ожидаю, что проблема будет скрыта там.

Я попытался установить несколько точек останова в коде, чтобы изолировать, где код не работает. Я пришел к выводу, что шаги маршрута не обновляются, потому что код возвращается в результате оператора охраны. Наша функция: updateStep () вызывается из NavigationViewController. Он вызывает функцию, которая определена в отдельном файле, в который возвращается оператор защиты.

Я пытался обновить 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
        }

Я ожидаю, что код не вернется и будет продолжать выполнять функцию. Хотя оператор guard возвращается, потому что более новый routeStep не больше, чем currentStepIndex.

...