Jus*_*ode 2 c# sql latitude-longitude
我有经纬度的桌子
Lat Longitude
Run Code Online (Sandbox Code Playgroud)
40.8151 -73.0455 U 36103
40.8132 -73.0476 U 36103
Run Code Online (Sandbox Code Playgroud)
所以我想要的是我从我的页面传递两个经度和纬度如何使用商店程序找到最近的地方我没有太多的手,所以我不得不在这里问
尝试使用这个
( 3959 * acos( cos( radians(37) ) * cos( radians( @latitude ) ) * cos( radians( @longtitude ) - radians(-122) ) + sin( radians(37) ) * sin( radians( @latitude ) ) ) )
Run Code Online (Sandbox Code Playgroud)
但我必须将它与表值相匹配,那么我该如何实现呢?
SELECT ROUND(6371 * acos(cos(radians('lat')) * cos(radians(latitude)) * cos(radians(longitude) - radians('long')) + sin(radians('lat')) * sin(radians(latitude)))) as distance,latitude,longitude, from your_table HAVING distance<=20 order by distance
Run Code Online (Sandbox Code Playgroud)
您可以在SQL中使用类似于上面显示的查询,其中'lat'和'long'是要传递以搜索的变量值.该'longitude'和'latitude'是从你的表的列名.顺便说一句,这被称为Haversine公式,常数6371用于获取KM中的距离,而3959用于获取英里距离.您可以根据自己的要求使用其中任何一个.