使用经度和纬度查找给定距离内的所有附近客户
本文关键字:客户 距离 经度 纬度 查找 | 更新日期: 2023-09-27 18:36:04
我有一个包含客户经度和纬度的数据库,我有一个搜索表单,用户将在其中输入日志/纬度,距离下拉列表包含 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)与所需距离进行比较。
逻辑是计算距离<=所需距离,则表示当前客户在所需距离内,而客户在径向距离之外