private double[][] getDistances(GDistanceMatrixResponse response) { var distances = RectangularArrays.ReturnRectangularDoubleArray(response.Rows.Length, response.Rows.Length); for (var i = 0; i < response.Rows.Length; i++) { for (var j = 0; j < response.Rows[i].Elements.Length; j++) { distances[i][j] = response.Rows[i].Elements[j].Distance.Value; } } return(distances); }
public virtual ICollection <string> CalculateRoute(ICollection <string> locations) { if (locations == null || locations.Count == 0) { return(null); } if (locations.Count >= 1 && locations.Count <= 2) { return(locations); } GDistanceMatrixResponse response = null; response = GetResponse(locations); var distances = getDistances(response); var solver = new RouteSolver.Solver.RouteSolver(distances); var p = solver.Solve(20); return(BuildResult(p, locations)); }