Пример #1
0
        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);
        }
Пример #2
0
        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;
        }
Пример #3
0
 private int CompareItinerary(ItineraryItem a, ItineraryItem b)
 {
     return(b.TravelDistance.CompareTo(a.TravelDistance));
 }
Пример #4
0
 private int CompareItinerary(ItineraryItem a, ItineraryItem b)
 {
     return b.TravelDistance.CompareTo(a.TravelDistance);
 }