private Services.RouteServices.RouteRequest GetRequest(Route response) { Services.RouteServices.RouteRequest request = new Services.RouteServices.RouteRequest(); request.Waypoints = new List <Services.RouteServices.Waypoint>(); request.Waypoints.Add(new Services.RouteServices.Waypoint()); request.Credentials = new Services.RouteServices.Credentials(); request.Credentials.ApplicationId = this.ApplicationId; request.Waypoints[0].Location = new Services.RouteServices.Location(); request.Waypoints[0].Location.Latitude = this.Waypoints[0].Location.Latitude; request.Waypoints[0].Location.Longitude = this.Waypoints[0].Location.Longitude; ItineraryItem[] items = new ItineraryItem[response.RouteLeg[0].ItineraryItem.Length]; response.RouteLeg[0].ItineraryItem.CopyTo(items, 0); Array.Sort <ItineraryItem>(items, new Comparison <ItineraryItem>(CompareItinerary)); int counter = 1; List <ItineraryItem> validItems = new List <ItineraryItem>(); for (int i = 0; i < 23 && i < items.Length; ++i) { validItems.Add(items[i]); } foreach (ItineraryItem item in response.RouteLeg[0].ItineraryItem) { if (validItems.Contains(item)) { request.Waypoints.Add(new Services.RouteServices.Waypoint()); request.Waypoints[request.Waypoints.Count - 1].Location = new Services.RouteServices.Location(); request.Waypoints[request.Waypoints.Count - 1].Location.Latitude = item.ManeuverPoint.Latitude; request.Waypoints[request.Waypoints.Count - 1].Location.Longitude = item.ManeuverPoint.Longitude; counter++; if (counter >= 23) { break; } } } /* * int itemCount = 23; * int increment = (int)Math.Max(1, Math.Floor(response.RoutePath.Line.Point.Length / (double)itemCount)); * for (int i = 0; i < itemCount && i < response.RoutePath.Line.Point.Length; i += increment) * { * Point item = response.RoutePath.Line.Point[i]; * request.Waypoints.Add(new Services.RouteServices.Waypoint()); * request.Waypoints[request.Waypoints.Count - 1].Location = new Services.RouteServices.Location(); * request.Waypoints[request.Waypoints.Count - 1].Location.Latitude = item.Latitude; * request.Waypoints[request.Waypoints.Count - 1].Location.Longitude = item.Longitude; * } */ request.Waypoints.Add(new Services.RouteServices.Waypoint()); request.Waypoints[request.Waypoints.Count - 1].Location = new Services.RouteServices.Location(); request.Waypoints[request.Waypoints.Count - 1].Location.Latitude = this.Waypoints[this.Waypoints.Count - 1].Location.Latitude; request.Waypoints[request.Waypoints.Count - 1].Location.Longitude = this.Waypoints[this.Waypoints.Count - 1].Location.Longitude; // Only accept results with high confidence. request.Options = new Services.RouteServices.RouteOptions(); request.Options.RoutePathType = Services.RouteServices.RoutePathType.None; request.Options.TrafficUsage = Services.RouteServices.TrafficUsage.TrafficBasedTime; return(request); }
private Services.RouteServices.RouteRequest GetRequest(Route response) { Services.RouteServices.RouteRequest request = new Services.RouteServices.RouteRequest(); request.Waypoints = new List<Services.RouteServices.Waypoint>(); request.Waypoints.Add(new Services.RouteServices.Waypoint()); request.Credentials = new Services.RouteServices.Credentials(); request.Credentials.ApplicationId = this.ApplicationId; request.Waypoints[0].Location = new Services.RouteServices.Location(); request.Waypoints[0].Location.Latitude = this.Waypoints[0].Location.Latitude; request.Waypoints[0].Location.Longitude = this.Waypoints[0].Location.Longitude; ItineraryItem[] items = new ItineraryItem[response.RouteLeg[0].ItineraryItem.Length]; response.RouteLeg[0].ItineraryItem.CopyTo(items, 0); Array.Sort<ItineraryItem>(items, new Comparison<ItineraryItem>(CompareItinerary)); int counter = 1; List<ItineraryItem> validItems = new List<ItineraryItem>(); for (int i = 0; i < 23 && i < items.Length; ++i) { validItems.Add(items[i]); } foreach (ItineraryItem item in response.RouteLeg[0].ItineraryItem) { if (validItems.Contains(item)) { request.Waypoints.Add(new Services.RouteServices.Waypoint()); request.Waypoints[request.Waypoints.Count - 1].Location = new Services.RouteServices.Location(); request.Waypoints[request.Waypoints.Count - 1].Location.Latitude = item.ManeuverPoint.Latitude; request.Waypoints[request.Waypoints.Count - 1].Location.Longitude = item.ManeuverPoint.Longitude; counter++; if (counter >= 23) { break; } } } /* int itemCount = 23; int increment = (int)Math.Max(1, Math.Floor(response.RoutePath.Line.Point.Length / (double)itemCount)); for (int i = 0; i < itemCount && i < response.RoutePath.Line.Point.Length; i += increment) { Point item = response.RoutePath.Line.Point[i]; request.Waypoints.Add(new Services.RouteServices.Waypoint()); request.Waypoints[request.Waypoints.Count - 1].Location = new Services.RouteServices.Location(); request.Waypoints[request.Waypoints.Count - 1].Location.Latitude = item.Latitude; request.Waypoints[request.Waypoints.Count - 1].Location.Longitude = item.Longitude; } */ request.Waypoints.Add(new Services.RouteServices.Waypoint()); request.Waypoints[request.Waypoints.Count - 1].Location = new Services.RouteServices.Location(); request.Waypoints[request.Waypoints.Count - 1].Location.Latitude = this.Waypoints[this.Waypoints.Count - 1].Location.Latitude; request.Waypoints[request.Waypoints.Count - 1].Location.Longitude = this.Waypoints[this.Waypoints.Count-1].Location.Longitude; // Only accept results with high confidence. request.Options = new Services.RouteServices.RouteOptions(); request.Options.RoutePathType = Services.RouteServices.RoutePathType.None; request.Options.TrafficUsage = Services.RouteServices.TrafficUsage.TrafficBasedTime; return request; }
private int CompareItinerary(ItineraryItem a, ItineraryItem b) { return(b.TravelDistance.CompareTo(a.TravelDistance)); }
private int CompareItinerary(ItineraryItem a, ItineraryItem b) { return b.TravelDistance.CompareTo(a.TravelDistance); }