C# 如何使用纬度和经度计算距离?

C# 如何使用纬度和经度计算距离?,c#,sql,latitude-longitude,C#,Sql,Latitude Longitude,我有一张有经纬度的桌子 所以我想要的是,我正在从我的页面传递两个经度和纬度,如何使用存储过程找到最近的位置我没有太多的手,所以我必须在这里问一下 我试过用这个 ( 3959 * acos( cos( radians(37) ) * cos( radians( @latitude ) ) * cos( radians( @longtitude ) - radians(-122) ) + sin( radians(37) ) * sin( radians( @latitude ) ) ) )

我有一张有经纬度的桌子



所以我想要的是,我正在从我的页面传递两个经度和纬度,如何使用存储过程找到最近的位置我没有太多的手,所以我必须在这里问一下

我试过用这个

( 3959 * acos( cos( radians(37) ) * cos( radians( @latitude ) ) * cos( radians( @longtitude ) - radians(-122) ) + sin( radians(37) ) * sin( radians( @latitude ) ) ) )

但我必须将其与表格值匹配,因此如何实现这一点?

选择圆形(6371*acos(弧度('lat'))*cos(弧度(纬度))*cos(弧度(经度)-弧度('long'))+sin(弧度('lat'))*sin(弧度(纬度)),作为距离、纬度、经度,从具有距离的_表中,您可能会发现此页面很有用:@dholakiyaankit-它给您带来了什么错误?当有人试图帮助你时,你的反馈要尽量具体。@Damien_不信者回合需要两三次values@dholakyaankit当前位置我提出这个问题只是作为一个建议。您可能需要对其进行适当的更改,以使其在SQL server上运行。这可能需要查看函数语法。但是,公式应保持不变。请注意,此公式对球体有效。如果你需要一个更精确的计算,你必须寻找其他的东西。但是我觉得这个答案对我没有帮助。对不起
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
( 3959 * acos( cos( radians(37) ) * cos( radians( @latitude ) ) * cos( radians( @longtitude ) - radians(-122) ) + sin( radians(37) ) * sin( radians( @latitude ) ) ) )
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