Found the solution!
You need to declare NMACoreRouter
object as a class variable.
class <Class_Name> { var coreRouter: NMACoreRouter! func <Your_Function>() { coreRoute = NMACoreRouter() let startPoint = NMAGeoCoordinates(latitude: latitude1, longitude: longitude1) let waypoint1 = NMAWaypoint(geoCoordinates: startPoint) let middlePoint = NMAGeoCoordinates(latitude: latitude2, longitude: longitude2) let waypoint2 = NMAWaypoint(geoCoordinates: middlePoint, waypointType: NMAWaypointType.ViaWaypoint) let endPoint = NMAGeoCoordinates(latitude: latitude3, longitude: longitude3) let waypoint3 = NMAWaypoint(geoCoordinates: endPoint, waypointType: NMAWaypointType.StopWaypoint) let stopList = [waypoint1, waypoint2, waypoint3] // I have also tried adding the NMAGeoCoordinates to array but still no callback let routingMode = NMARoutingMode(routingType: NMARoutingType.Fastest, transportMode: NMATransportMode.Car, routingOptions: 0) coreRoute.calculateRouteWithStops(stopList, routingMode: routingMode) { (routeResult: NMARouteResult?, error: NMARoutingError?) in if error == nil && routeResult != nil && routeResult!.routes.count > 0 { let route = routeResult!.routes.first as! NMARoute let mapRoute = NMAMapRoute(route: route) self.mapView.addMapObject(mapRoute) } else { // Handle error } } } }
EDIT: Navigation Code
let navigationManager = NMANavigationManager.sharedNavigationManager()navigationManager.delegate = selfnavigationManager.map = mapViewnavigationManager.startTurnByTurnNavigationWithRoute(route)navigationManager.startTrackingWithTransportMode(.Car)//SimulationsharedPositioningManager.dataSource = NMARoutePositionSource(route: route)