/// <summary> /// Builds a route along all the given point in the order given by the tsp solution. /// </summary> /// <returns></returns> public Route BuildRoute(Vehicle vehicle, RouterPoint[] resolved, GeoCoordinate[] coordinates, OsmSharp.Logistics.Routes.IRoute tspSolution, bool isRound) { // sort resolved and coordinates. var solution = tspSolution.ToArray(); var size = isRound ? solution.Length + 1 : solution.Length; var sortedResolved = new RouterPoint[size]; var sortedCoordinates = new GeoCoordinate[size]; for (int idx = 0; idx < solution.Length; idx++) { sortedResolved[idx] = resolved[solution[idx]]; sortedCoordinates[idx] = coordinates[solution[idx]]; } // make round if needed. if (isRound) { sortedResolved[size - 1] = sortedResolved[0]; sortedCoordinates[size - 1] = sortedCoordinates[0]; } // build the route. return this.BuildRoute(vehicle, sortedResolved, sortedCoordinates); }