Esempio n. 1
0
        /// <summary>
        /// google maps function for calculate distances
        /// This function doesn't work and get stuck.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="dest"></param>
        /// <returns>distance</returns>
        public static int CalculateDistance(string source, string dest)
        {
            var drivingDirectionRequest = new GoogleMapsApi.Entities.Directions.Request.DirectionsRequest
            {
                TravelMode  = GoogleMapsApi.Entities.Directions.Request.TravelMode.Walking,
                Origin      = source,
                Destination = dest,
            };

            GoogleMapsApi.Entities.Directions.Response.DirectionsResponse drivingDirections = GoogleMaps.Directions.Query(drivingDirectionRequest); // This is the line that stuck the program
            GoogleMapsApi.Entities.Directions.Response.Route route = drivingDirections.Routes.First();
            GoogleMapsApi.Entities.Directions.Response.Leg   leg   = route.Legs.First();
            return(leg.Distance.Value);
        }
Esempio n. 2
0
        public static int getDistance(String source, string dest)
        {
            var dircetionRequest = new GoogleMapsApi.Entities.Directions.Request.DirectionsRequest
            {
                TravelMode  = GoogleMapsApi.Entities.Directions.Request.TravelMode.Walking,
                Origin      = source,
                Destination = dest,
            };

            var drivingDirections = GoogleMaps.Directions.Query(dircetionRequest);
            var route             = drivingDirections.Routes.First();
            var leg = route.Legs.First();

            return(leg.Distance.Value);
        }
        public async Task <Plan> GetDirectionsAsync(TransitDirectionsRequest r)
        {
            var request = new GoogleMapsApi.Entities.Directions.Request.DirectionsRequest()
            {
                Destination = FormatCoordinate(r.To),
                Origin      = FormatCoordinate(r.From),
                TravelMode  = GoogleMapsApi.Entities.Directions.Request.TravelMode.Transit,
                ApiKey      = options.GoogleMapsApiKey
            };

            if (r.ArriveBy)
            {
                request.ArrivalTime = r.DateTime.UtcDateTime;
            }
            else
            {
                request.DepartureTime = r.DateTime.UtcDateTime;
            }
            var res = await GoogleMapsApi.GoogleMaps.Directions.QueryAsync(request);

            if (!res.Routes.Any())
            {
                return(null);
            }
            var routes = res.Routes
                         .Where(v => v.Legs.Any() && v.Legs.First().Steps.Any(b => b.TravelMode == GoogleMapsApi.Entities.Directions.Request.TravelMode.Transit))
                         .Select(v => v.Legs.First()).Select(v => new Itinerary()
            {
                EndTime   = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero).Add(v.ArrivalTime.Value),
                StartTime = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero).Add(v.DepartureTime.Value),
                Legs      = v.Steps.Where(step => step.TravelMode == GoogleMapsApi.Entities.Directions.Request.TravelMode.Transit).Select(step => new Leg()
                {
                    To = null != step.TransitDetails?.ArrivalStop ? new Place()
                    {
                        Coordinate =
                            new Coordinate()
                        {
                            Lat = step.TransitDetails.ArrivalStop.Location.Latitude,
                            Lng = step.TransitDetails.ArrivalStop.Location.Longitude
                        },
                        Name = step.TransitDetails.ArrivalStop.Name
                    } : null,
                    From = null != step.TransitDetails?.DepartureStop ? new Place()
                    {
                        Coordinate =
                            new Coordinate()
                        {
                            Lat = step.TransitDetails.DepartureStop.Location.Latitude,
                            Lng = step.TransitDetails.DepartureStop.Location.Longitude
                        },
                        Name = step.TransitDetails.DepartureStop.Name
                    } : null,
                    Headsign = step.TransitDetails.Headsign,
                    Line     = null != step.TransitDetails.Lines ? new Models.Line()
                    {
                        Name        = step.TransitDetails.Lines.Name,
                        ShortName   = step.TransitDetails.Lines.ShortName,
                        VehicleType = "Unknown"
                    } : null,
                    EndTime   = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero).Add(step.TransitDetails.ArrivalTime.Value),
                    StartTime = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero).Add(step.TransitDetails.DepartureTime.Value),
                    NumStops  = step.TransitDetails.NumberOfStops
                }).ToArray()
            }).ToArray();

            return(new Plan()
            {
                Itineraries = routes
            });
        }