使用经度和纬度查找给定距离内的所有附近客户



我有一个包含客户经度和纬度的数据库,我有一个搜索表单,用户将在其中输入日志/纬度,距离下拉列表包含 50 英里、100 英里,....当用户单击搜索时,我想编写一个 linq 查询,以从此距离半径内的数据库获取所有客户。如何使用 C# 和 linq 做到这一点?

更新:
我发现这个 https://stackoverflow.com/a/1654365/20126 但这给出了一个正方形而不是半径

对我对类似问题的回答稍作修改:

// radius is the distance in meters
var center = new GeoCoordinate(latitude, longitude);
var result = customers.Select(x => new GeoCoordinate(x.Latitude, x.Longitude))
                      .Where(x => x.GetDistanceTo(center) < radius);

您需要添加对System.Device.dll 的引用。

使用哈弗正弦公式

用户将拥有当前位置,客户位置和距离

因此,使用haversine公式使用当前位置和客户位置计算距离(d1),然后将计算的距离(d1)与所需距离进行比较。

逻辑是计算距离<=所需距离,则表示当前客户在所需距离内,而客户在径向距离之外

最新更新