我有一组随机坐标(纬度和经度),我想根据特定坐标按距离排序。谁能帮我 ?我在互联网上搜索过,但我找不到它。提前谢谢。
我正在使用下面的代码,但效率不高,因为我需要从最近的到最近的每个坐标得到:
var mapItens = ((from i in coordinatesArray
(latitudeCurrent > i.Latitude && ((latitudeCurrent - i.Latitude) < 0.700 || (longitudeCurrent - i.Longitude) < 0.700)) ||
(latitudeCurrent < i.Latitude && ((i.Latitude - latitudeCurrent) < 0.700 || (i.Longitude - longitudeCurrent) < 0.700)))
select i).toList();
答案 0 :(得分:2)
您需要根据他们与兴趣点的距离对点进行排序。 (我们称之为'指向我'。)
这将涉及调用if ($file_extension == "png") {
echo "<img src="">"
} else {
<video></video>
}
函数并将其传递给IList.Sort()
。 (参见https://msdn.microsoft.com/en-us/library/234b841s(v=vs.110).aspx)比较器给出两个点a和b,并且应该确定哪个是“更大”。
根据问题的定义,如果a和i之间的距离大于b和i之间的距离,则a点大于b点。因此,您的比较器只是计算这两个距离,并比较距离而不是点。
如果您的坐标跨越如此大的地理区域以至于地球的曲率很重要,那么您需要特殊的公式来计算地理坐标中给出的两个点之间的距离。这不是微不足道的,人们通常会使用库来做那种事情。
如果坐标被限制在足够小的地理区域内,地球的曲率无关紧要,那么你可以使用一个简单的三角距离公式:
距离=平方根 - ((a.x - i.x) 2 +(b.y - i.y) 2 )。
由于你实际上并不关心确切的距离,而只是关于距离如何相互比较,你可以使用一个hacky小技巧并避免取平方根,比较仍然会产生相同的结果。< / p>