Мы разрабатываем приложение, которое показывает маршрут и показывает его нашим водителям. Есть несколько точек, которые водитель должен пройти оттуда. Мы рассчитываем маршрут от места водителя до следующей точки. Когда водитель достигает точки, мы рассчитываем новый маршрут и присваиваем ему NMANavigationManager
и обновляем NMAMapRoute
объект на карте. Для первого маршрута все в порядке, мы видим, что весь маневр и маршрут могут перенаправить себя с помощью метода делегата navigationManagerDidReroute
.
Проблема начинается с расчета нового маршрута и его установки NMANavigationManager
. Маршрут карты обновляется с правильным маршрутом, но мы потеряли голос навигации и возможность перенаправления. Нет вызова метода делегата после расчета и установки нового маршрута.
Я пробовал некоторые решения. Это моя функция startNavigation. Я вызываю эту функцию после расчета маршрута.
func startNavigation() {
self.mapView?.mapScheme = NMAMapSchemeCarNavigationDay
guard let route = self.route else {
print("Route is nil")
return
}
self.startButton.isHidden = true
self.maneuverView.isHidden = false
if let turkishPackage = NMAVoiceCatalog.sharedInstance()?.voicePackage(withId: 218) {
NMANavigationManager.sharedInstance().voicePackage = turkishPackage
}
NMANavigationManager.sharedInstance().mapTrackingEnabled = isFollowing
NMANavigationManager.sharedInstance().isVoiceEnabled = true
NMANavigationManager.sharedInstance().mapTrackingOrientation = .dynamic
NMANavigationManager.sharedInstance().isSpeedWarningEnabled = true
NMANavigationManager.sharedInstance().mapTrackingAutoZoomEnabled = true
NMANavigationManager.sharedInstance().delegate = self
NMANavigationManager.sharedInstance().startTurnByTurnNavigation(route)
}
И останавливаю маршрут после вызова navigationManagerDidReachDestination
, затем рассчитываю маршрут и начинаю пошаговую навигацию с вышеуказанной функцией. Но я упомянул рано с этим новым маршрутом навигационные методы делегата не вызваны.
Также я использовал функцию [[NMANavigationManager sharedNavigationManager] setRoute:newRoute];
для установки нового рассчитанного маршрута менеджера навигации, но это тоже не работает.
Я прочитал все подробности в документе здесь руководство карты
Я не уверен, что мой подход неверен или отсутствует. Может быть, вы можете помочь мне с лучшим алгоритмом расчета нескольких маршрутов и навигации по нему во время навигации по диспетчеру маршрутизации.