Example #1
0
        public ResponseMessage <List <RecyclingBank> > GetAllClose(RecyclingBankRequest _recyclingBankRequest)
        {
            ResponseMessage <List <RecyclingBank> > response = new ResponseMessage <List <RecyclingBank> >();

            try
            {
                List <RecyclingBank> banks = _recyclingBankRepository.GetAll();
                var currentLocation        = new GeoCoordinatePortable.GeoCoordinate(double.Parse(_recyclingBankRequest.Coordinate.Split(',')[0], CultureInfo.InvariantCulture), double.Parse(_recyclingBankRequest.Coordinate.Split(',')[1], CultureInfo.InvariantCulture));
                foreach (var item in banks)
                {
                    var bankLocation = new GeoCoordinatePortable.GeoCoordinate(double.Parse(item.Position.Split(',')[0], CultureInfo.InvariantCulture), double.Parse(item.Position.Split(',')[1], CultureInfo.InvariantCulture));
                    if (currentLocation.GetDistanceTo(bankLocation) < (_recyclingBankRequest.Radius * 1000))
                    {
                        response.ResponseObject.Add(item);
                    }
                }
                response.IsSuccess    = true;
                response.ErrorMessage = "Success";
            }
            catch (Exception ex)
            {
                response.IsSuccess    = false;
                response.ErrorMessage = ex.Message;
            }

            return(response);
        }
Example #2
0
        public static void ComputeDistance(Route route)
        {
            var coordinates = route.Coordinates
                              .Split('\n')
                              .ToList()
                              .Select(c => c.Split(',').Select(c => double.Parse(c, CultureInfo.InvariantCulture)).ToList())
                              .ToList();
            var distance = 0d;

            for (var index = 1; index < coordinates.Count; index++)
            {
                var start = new GeoCoordinatePortable.GeoCoordinate(coordinates[index - 1][1], coordinates[index - 1][0]);
                var end   = new GeoCoordinatePortable.GeoCoordinate(coordinates[index][1], coordinates[index][0]);

                distance += start.GetDistanceTo(end);
            }
            distance = Math.Round(distance / 1000, 3);
            route.CalculatedDistance = Math.Round(distance * 1.0064, 2);
        }
Example #3
0
 public double GetDistance(double xLa, double xLong, double yLa, double yLong)
 {
     GeoCoordinatePortable.GeoCoordinate cordx = new GeoCoordinatePortable.GeoCoordinate(xLa, xLong);
     GeoCoordinatePortable.GeoCoordinate cordy = new GeoCoordinatePortable.GeoCoordinate(yLa, yLong);
     return(cordx.GetDistanceTo(cordy));
 }