public int CalculateDistanceBetweenLocations(GeoLocation searchLocation, double latitude, double longitude)
 {
     if (searchLocation == null)
     {
         return 0;
     }
     var geoCoordinate1 = new GeoCoordinate(searchLocation.Latitude, searchLocation.Longitude);
     var geoCoordinate2 = new GeoCoordinate(latitude, longitude);
     var distanceInMiles = (geoCoordinate1.GetDistanceTo(geoCoordinate2) / 1000) / KilometresPerMile;
     return (int)Math.Round(distanceInMiles);
 }
Пример #2
0
 private List<UserResult> RetrieveUsersInArea(GeoLocation searchLocation, int radius)
 {
     var users = _userRepository.RetrieveAllActiveUsers();
     var usersInArea = new List<UserResult>();
     foreach (var user in users)
     {
         var distanceBetweenLocations = _distanceCalculator.CalculateDistanceBetweenLocations(searchLocation, user.Latitude, user.Longitude);
         if (distanceBetweenLocations < radius)
         {
             usersInArea.Add(new UserResult
                 {
                     UserId = user.UserId,
                     Distance = distanceBetweenLocations,
                     Rating = user.Rating
                 });
         }
     }
     return usersInArea;
 }