给定一组地理坐标和另一个地理坐标,我想找到最近的坐标。
例如,给定数组:
LAT长
52.525782 13.316927
52.526409 13.319083
52.525678 13.320317
关键点:52.525730, 13.314556
,然后返回第一个点52.525782, 13.316927
,因为它是最接近的点。
实现它的唯一方法是循环遍历所有阵列并找到点之间的距离吗?如果数组包含太多坐标会发生什么?
答案 0 :(得分:1)
您可以使用LINQ进行尝试,但LINQ的内部工作方式仍会在您的集合中循环。例如:
//Your list with coordinates
List<GeoCoordinate> coords = new List<GeoCoordinate>();
//The coord you want to compare
GeoCoordinate crd = new GeoCoordinate();
//Sorts the list based on the proximity of the coords to crd
var sortedCoords = coords.OrderBy(x => x.GetDistanceTo(crd)).ToList();
我知道它没有使用数组,但我发现使用列表更容易。
我认为这应该有用,如果有,请告诉我!
答案 1 :(得分:0)
struct coord
{
public double lat;
public double lon;
}
public void Main(coord coord)
{
var coords = new[]{ new coord(){lat=1, lon=1} };
var closest = coords.Min(p => Math.Abs(p.lat - coord.lat) + Math.Abs(p.lon - coord.lon));
}