使用LINQ在XML中搜索坐标

时间:2013-01-18 18:04:58

标签: c# linq api windows-phone-7

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

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

上面的senario是否可以在C#中使用LINQ语句?如果是这样,是否可以获得近距离匹配?即如果该人不在坐标中,则向他/她显示最近的匹配。

我不是专门寻找任何代码,只是LINQ上的任何提示,技巧或高级教程都会有所帮助。

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用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;
    }
}

答案 1 :(得分:0)

请参阅Calculate distance, bearing and more between Latitude/Longitude points并使用最适合您情况的方法。如果您在列表中有一组点数进行计算,那么Linq到Object的扩展可以帮助您根据需要确定逻辑。