数据库存储4个点,其坐标如下:
姓名| 纬度| 长
点1 | 11.111 | 22.222
点2 | 22.222 | 33.333
点3 | 44.444 | 55.555
点4 | 66.666 | 77.777
技术:
MS SQL服务器
Web应用程序通过HTML5获得当前用户的纬度和经度,然后它应该计算这4个点中的哪些点更接近0.5公里。怎么样?
根据此插图,它应该显示Point 1和Point 2:
您可以使用以下功能找到两个坐标之间的距离(以公里为单位)
CREATE FUNCTION dbo.fnCalcDistanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
RETURNS FLOAT
AS
BEGIN
RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
END
用法示例:
select [dbo].[fnCalcDistanceKM](13.077085,80.262675,13.065701,80.258916)
实体框架5.0允许您这样编写LINQ表达式
private Facility GetNearestFacilityToJobsite(DbGeography jobsite)
{
var q1 = from f in context.Facilities
let distance = f.Geocode.Distance(jobsite)
where distance < 500 * 1609.344
orderby distance
select f;
return q1.FirstOrDefault();
}
我希望这足以让您入门。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句