使用LINQ搜索XML坐标



我不是在寻找任何代码,只是对项目的特定方面的建议。

我有一个包含坐标和建筑名称的XML文件,我希望能够捕获人所在位置的坐标(我将创建一个移动应用程序,所以这是可以的)。

在c#中使用LINQ语句是否可能出现上述情况?如果是这样,有可能得到一个接近的匹配吗?也就是说,如果这个人不完全在坐标中,给他/她看最近的匹配点。

我不是特别寻找任何代码,只是任何提示,技巧,或高级教程LINQ将是有帮助的。

谢谢

您可以使用System.Device.Location.GeoCoordinate

List<GeoCoordinate> listTakenFromXml = ......
double lat = ......
double lon = ........
var nearest = new GeoCoordinate(lat, lon).NearestPoint(listTakenFromXml);

public static class SoExtensions
{
    public static GeoCoordinate NearestPoint(this GeoCoordinate loc, IEnumerable<GeoCoordinate> coords)
    {
        GeoCoordinate minLoc = null;
        double minDist = double.MaxValue;
        foreach (var c in coords)
        {
            var dist = c.GetDistanceTo(loc);
            if ( dist < minDist)
            {
                minDist = dist;
                minLoc = c;
            }
        }
        return minLoc;
    }
}

参见计算经纬度点之间的距离、方位等,并使用最适合您情况的方法。一旦你有了计算,如果你有一个列表中的一组点,那么Linq对象的扩展可以帮助你根据需要确定你的逻辑。

相关内容

  • 没有找到相关文章