Example #1
0
        public List <GeoPoint> GetAllInRange(GeoPoint point, int range)
        {
            List <GeoPoint> points = new List <GeoPoint>();

            //Generates range 1 km in geographic degrees
            double rangeNS = Geographic.countRangeNS(range);
            double rangeEW = Geographic.countRangeEW(range, point.Latitude);

            //Generates range in geographic degrees for range in km
            string eastRange  = (point.Longitude + rangeEW).ToString().Replace(",", ".");
            string westRange  = (point.Longitude - rangeEW).ToString().Replace(",", ".");
            string northRange = (point.Latitude + rangeNS).ToString().Replace(",", ".");
            string southRange = (point.Latitude - rangeNS).ToString().Replace(",", ".");

            using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlServerConnString"].ConnectionString))
            {
                var sql = "SELECT * FROM Geopoints AS G "
                          + $"WHERE G.Latitude BETWEEN {southRange}  AND {northRange} AND G.Longitude BETWEEN {westRange} and {eastRange};";
                db.Open();
                points = db.Query <GeoPoint>(sql)
                         .Distinct()
                         .ToList();
            }
            return(points);
        }