0

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

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

是否可以在 C# 中使用 LINQ 语句来实现上述场景?如果是这样,是否有可能获得近距离匹配?即,如果该人不在坐标中,则向他/她显示最近的匹配项。

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

谢谢

4

2 回答 2

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;
    }
}
于 2013-01-18T18:22:40.277 回答
0

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

于 2013-01-18T18:26:50.760 回答