Как пересчитать Route в Sygic - PullRequest
0 голосов
/ 22 ноября 2018

Моя проблема проста: я вычисляю основной маршрут и добавляю его в Sygic MapView.Я определил начальную точку, а также конечную точку.Работает отлично.Но когда я пытаюсь перейти на альтернативный маршрут, когда я начал навигацию, он не может точно пересчитать новый маршрут.Я использовал

 func navigation(_ navigation: SYNavigation, didUpdate positionInfo: SYPositionInfo?) {

, чтобы обнаруживать изменения в моей позиции и каждый раз вычислять маршрут, но я думаю, что это не лучший выбор:

func navigation(_ navigation: SYNavigation, didUpdate positionInfo: SYPositionInfo?) {
        if (mapRoute != nil){
            mapView.remove(mapRoute)
            computeRoute(from: startPointMP, to: endPointMP)
        }
    }

func computeRoute(from fromCoordinate: SYGeoCoordinate, to toCoordinate:
    SYGeoCoordinate) {
    let startWaypoint = SYWaypoint(position: fromCoordinate, type: .start, name: "Begin")
    let endWaypoint = SYWaypoint(position: toCoordinate, type: .end, name: "End")
    let routingOptions = SYRoutingOptions()
    routingOptions.transportMode = .unknown// For other options see SYTransportMode
    routingOptions.routingType = .economic// For other options see SYRoutingType
    routing.computeRoute(startWaypoint, to: endWaypoint, via: nil, with: routingOptions)
}


func routing(_ routing: SYRouting, didComputePrimaryRoute route: SYRoute?) {
    SYNavigation.shared().start(with: route)
    // You might want to put it also on the map
    mapRoute = SYMapRoute(route: route!, type: .primary)
    markerEnd = SYMapMarker(coordinate: endPointMP!, image: UIImage(named: "Arrive")!)
    mapView.add(mapRoute)
    mapView.add(markerEnd)
    mapView.add(markerStart)
    mapView.cameraMovementMode = .free
}
...