public ConnexionzRoute(RoutePatternProjectRoute routePatternProjectRoute) { RouteNo = routePatternProjectRoute.RouteNo; // Some routes have multiple paths. Let's just take whichever path is longest. var longestPattern = routePatternProjectRoute.Destination .Select(d => d.Pattern.First()) .Aggregate((p1, p2) => p1.Platform.Length > p2.Platform.Length ? p1 : p2); IsActive = longestPattern.Schedule == "Active"; Polyline = EncodePolyline(GetPoints(longestPattern.Mif)); Path = longestPattern.Platform .Select(p => new ConnexionzRoutePlatform(p)) .Distinct(ConnexionzRoutePlatformComparer.Instance) .ToList(); }
public ConnexionzRoute(RoutePatternProjectRoute routePatternProjectRoute) { RouteNo = routePatternProjectRoute.RouteNo; var longestPattern = routePatternProjectRoute.Destination .Select(d => d.Pattern) .Aggregate((p1, p2) => p1.Platform.Length > p2.Platform.Length ? p1 : p2); IsActive = longestPattern.Schedule == "Active"; Polyline = EncodePolyline(GetPoints(longestPattern.Mif)); var points = GetPoints(longestPattern.Mif); // TODO: get the actual data fixed if (RouteNo == "4") { var pointsList = points.ToList(); // there's a weird point on philomath blvd messing up the route path. just filter it out. var lowestIndex = 0; for (var i = 1; i < pointsList.Count; i++) { if (pointsList[i].Lat < pointsList[lowestIndex].Lat) { lowestIndex = i; } } pointsList.RemoveAt(lowestIndex); points = pointsList; } Polyline = EncodePolyline(points); Path = longestPattern.Platform .Where(p => !string.IsNullOrEmpty(p.PlatformNo)) .Select(p => new ConnexionzRoutePlatform(p)) .Distinct(ConnexionzRoutePlatformComparer.Instance) .ToList(); }