Tuesday, April 26, 2016

Get palaces from database using lat long between specific kms range in C#

public static getdistance (string currlocationlatlong, int kms)
        {
             try
            {
              
         
       DbGeography searchLocation = DbGeography.FromText(String.Format("POINT({0} {1})", longitude, latitude));
                   
                    string[] latlng = currlocationlatlong.Split(new char[] { ',' });
                    decimal mylat = Convert.ToDecimal(latlng[0].ToString());
                    decimal mylng = Convert.ToDecimal(latlng[1].ToString());
                        var places = (from u in db.Locations
                                                                       
                                      select u).Select(x => new NewBusinessLocationModel 
                                      { 
                                           ID=x.ID,
                                            Address=x.Address,                                            
                                                 Lat=x.Lat,
                                                  Lng=x.Lng,
                                                   distance=searchLocation.Distance(
                                                   DbGeography.FromText("POINT(" + mylng + " " + mylat + ")"))
                                          
                                      })
                                      .OrderBy(x=>x.distance)
                                      .Where(x=>x.distance<kms)
                                      .ToList();

                        return places;
                    
               
            }
            catch (Exception ex)
            {
               
            }
        }

Stored Procedure in sql server to get distance from you current location lattitue and longitude

Create procedure Proc_GetLocations
(
@lat decimal=00.0,
@lng decimal=00.0
)as 
begin
select  BM.Name, BL.Lat,BL.Lng,
Geography::Point(@lat, @lng, 4326).STDistance(Geography::Point(Lat, Lng, 4326)) as Distance_Meters
from Location as BL inner join Master as BM on BL.BusinessId=BM.BusinessID
order by Distance_Meters
end