Example #1
0
        public double CalculaDistanciaEntreDoisPontos(double lat1, double long1, double lat2, double long2)
        {
            DistanceMatrixRequest request = new DistanceMatrixRequest();

            request.AddOrigin(new Waypoint {
                Position = new LatLng(lat1, long1)
            });
            request.AddDestination(new Waypoint {
                Position = new LatLng(lat2, long2)
            });
            request.Sensor = false;

            try
            {
                DistanceMatrixResponse response = new DistanceMatrixService().GetResponse(request);

                if (response.Status == ServiceResponseStatus.Ok)
                {
                    int distInteger;

                    if (Int32.TryParse(response.Rows[0].Elements[0].distance.Value, out distInteger))
                    {
                        return((double)distInteger / 1000);
                    }
                }
            }
            catch { }

            return(0.0);
        }
Example #2
0
        public static int GetDistance(List <string> locations)
        {
            int distance = 0;

            GoogleSigned.AssignAllServices(new GoogleSigned(apiKey));

            var request = new DistanceMatrixRequest();

            foreach (string s in locations)
            {
                request.AddOrigin(new Google.Maps.Location(s));
                request.AddDestination(new Google.Maps.Location(s));
            }
            request.Units = Units.imperial;

            var response = new DistanceMatrixService().GetResponse(request);

            if (response.Status == ServiceResponseStatus.Ok && response.Rows.Count() > 0)
            {
                for (int i = 0; i < response.Rows.Length - 1; i++)
                {
                    distance += (int)response.Rows[i].Elements[i + 1].distance.Value;
                }
            }

            return(distance);
        }
Example #3
0
        private Tuple <double?, long> GetDistanceBetweenTwoAddresses(Address addressOrigin, Address addressDestination)
        {
            DistanceMatrixRequest request = new DistanceMatrixRequest();

            GetLatirudeAndLogitudeOfAnAddress(addressOrigin);
            GetLatirudeAndLogitudeOfAnAddress(addressDestination);

            request.AddDestination(new LatLng(latitude: (decimal)addressOrigin.Latitude.Value, longitude: (decimal)addressOrigin.Longitude));

            request.AddOrigin(new LatLng(latitude: (decimal)addressDestination.Latitude.Value, longitude: (decimal)addressDestination.Longitude));

            request.Mode  = TravelMode.driving;
            request.Units = Units.metric;

            DistanceMatrixResponse response = new DistanceMatrixService().GetResponse(request);

            long   duration = 0;
            double?distance = null;

            if (response.Status == ServiceResponseStatus.Ok && response.Rows.Length == 1)
            {
                duration = response.Rows[0].Elements[0].duration.Value;
                distance = response.Rows[0].Elements[0].distance.Value;
                return(Tuple.Create(distance, duration));
            }
            else if (response.Status == ServiceResponseStatus.OverQueryLimit)
            {
                Console.WriteLine("Excesso de requisições no dia!");
            }
            return(Tuple.Create(distance, duration));
        }
Example #4
0
        public DistanceResult DistanceMatrix(Place origin, List <Place> destinations)
        {
            DistanceMatrixRequest req = new DistanceMatrixRequest();

            req.AddOrigin(new Google.Maps.Waypoint((decimal)origin.GeoLocation.Latitude, (decimal)origin.GeoLocation.Longitude));
            var index         = 0;
            var reverseLookup = new Dictionary <int, int>();

            for (int j = 0; j < destinations.Count; j++)
            {
                var dest = destinations[j];
                //if (dest.Visited) { continue; }
                if (!Init(dest, origin))
                {
                    continue;
                }
                req.AddDestination(new Google.Maps.Waypoint((decimal)dest.GeoLocation.Latitude, (decimal)dest.GeoLocation.Longitude));
                reverseLookup.Add(index, j);
                ++index;
            }
            req.Sensor = false;
            req.Units  = Google.Maps.Units.imperial;
            DistanceMatrixResponse response = GoogleServiceRequest(req);

            if (response.Rows == null || response.Rows.Count() == 0)
            {
                throw new InvalidOperationException(string.Format("Error: No rows returned, Status {0}", response.Status));
            }
            foreach (var row in response.Rows)
            {
                var resultPos = 0;
                foreach (var cell in row.Elements)
                {
                    var which    = reverseLookup[resultPos];
                    var dest     = destinations[which];
                    var name     = dest.Name;
                    var distText = cell.distance.Text;
                    var distVal  = Convert(cell.distance.Value);
                    var durText  = cell.duration.Text;
                    var durVal   = Convert(cell.duration.Value);
                    SetDistance(origin, resultPos, dest, name, distText, distVal, durText, durVal);
                    resultPos++;
                }
            }

            List <Place> distSort = CreateSortByDistance(destinations);
            List <Place> durSort  = CreateSortByDuration(destinations);

            return(new DistanceResult(response)
            {
                DistanceSort = distSort, DurationSort = durSort
            });
        }
Example #5
0
        public Task <DistanceMatrixResponse> Get(float start_latitude, float start_longitude, float end_latitude, float end_longitude)
        {
            var startLocation = new LatLng(start_latitude, start_longitude);
            var endLocation   = new LatLng(end_latitude, end_longitude);
            var request       = new DistanceMatrixRequest {
                Language = "en"
            };

            request.AddOrigin(startLocation);
            request.AddDestination(endLocation);

            return(_distanceMatrixService.GetResponseAsync(request));
        }
        public void DrivingDistancebyAddress()
        {
            DistanceMatrixRequest request = new DistanceMatrixRequest();

            //sheffield
            request.AddDestination(new Location("Sheffield"));
            //rotherham
            request.AddOrigin(new Location("Rotherham"));

            request.Sensor = true;
            request.Mode   = TravelMode.driving;

            DistanceMatrixResponse response = new DistanceMatrixService().GetResponse(request);

            Assert.IsTrue(response.Status == ServiceResponseStatus.Ok);
        }
        public void DrivingDistancebyAddressAndLngLat()
        {
            DistanceMatrixRequest request = new DistanceMatrixRequest();

            //sheffield
            request.AddDestination(new Location("Sheffield"));
            //rotherham
            request.AddOrigin(new LatLng(latitude: 53.434297m, longitude: -1.364678m));

            request.Sensor = true;
            request.Mode   = TravelMode.driving;

            DistanceMatrixResponse response = new DistanceMatrixService().GetResponse(request);

            Assert.IsTrue(response.Status == ServiceResponseStatus.Ok);
        }
        public void DrivingDistancebyLngLatHasOneOriginAndDestinationAdresses()
        {
            DistanceMatrixRequest request = new DistanceMatrixRequest();

            //rotherham
            request.AddOrigin(new LatLng(latitude: 53.434297m, longitude: -1.364678m));
            //sheffield
            request.AddDestination(new LatLng(latitude: 53.378243m, longitude: -1.462131m));

            request.Sensor = true;
            request.Mode   = TravelMode.driving;

            DistanceMatrixResponse response = new DistanceMatrixService().GetResponse(request);

            Assert.IsTrue(response.Status == ServiceResponseStatus.Ok);
            Assert.IsTrue(response.DestinationAddresses.Length == 1);
            Assert.IsTrue(response.OriginAddresses.Length == 1);
        }
        public IEnumerable <string> GetDistance(string origin, string destination)
        {
            try {
                var distanceMatrixRequest = new DistanceMatrixRequest();
                distanceMatrixRequest.AddOrigin(origin);
                distanceMatrixRequest.AddDestination(destination);
                distanceMatrixRequest.Mode = TravelMode.driving;

                var response = new DistanceMatrixService().GetResponse(distanceMatrixRequest);

                return(new List <string> {
                    response?.Rows[0]?.Elements[0]?.distance?.Text ?? "Failed to complete operation"
                });
            }
            catch (Exception e) {
                this.logger.Debug($"Failed to get distance between {origin} and {destination}. {e}");
                throw;
            }
        }
        private ExpandoObject DistanceByCoordinates(double pLatitude1, double pLongitude1, double pLatitude2, double pLongitude2)
        {
            DistanceMatrixRequest request = new DistanceMatrixRequest();

            request.AddDestination(new LatLng(latitude: pLatitude2, longitude: pLongitude2));
            request.AddOrigin(new LatLng(latitude: pLatitude1, longitude: pLongitude1));

            request.Mode = TravelMode.driving;

            DistanceMatrixResponse response = new DistanceMatrixService().GetResponse(request);
            dynamic data = new ExpandoObject();

            if (response.Status == ServiceResponseStatus.Ok)
            {
                data.meters     = response.Rows[0].Elements[0].distance.Value;
                data.kilometers = response.Rows[0].Elements[0].distance.Text;
                return(data);
            }
            else
            {
                return(null);
            }
        }
Example #11
0
        private void Calculate()
        {
            var req = new DistanceMatrixRequest();

            req.AddOrigin(new Waypoint()
            {
                Address = _start.ToString()
            });
            req.AddDestination(new Waypoint()
            {
                Address = _stop.ToString()
            });
            req.Sensor = false;
            req.Mode   = TravelMode.driving;
            req.Units  = Units.imperial;

            var response = new DistanceMatrixService().GetResponse(req);

            Distance = Convert.ToInt32(response.Rows.First().Elements.First().distance.Value);
            Duration = Convert.ToInt32(response.Rows.First().Elements.First().duration.Value);

            Console.WriteLine("Distance from {0}, to {1} is {2} - Travel Time: {3}", _start, _stop, Distance, Duration);
        }