如何从java中的列表中获取最近的纬度经度[重复]

Posted

技术标签:

【中文标题】如何从java中的列表中获取最近的纬度经度[重复]【英文标题】:How to get nearest latitude longitude from the list in java [duplicate] 【发布时间】:2016-03-21 06:38:42 【问题描述】:

我需要将 lat-long 值与 lat-longs 列表进行比较,并获得该给定值的最接近的值。例如,如果我有 latitude = 13.820000longitude = 47.887777,并且我还有一个包含数字的列表像[[13.41111,47.11111],[12.42332,53.3345],[14.23423,16.23423]] 这样的经纬度。因为我需要从给定值的列表中获取最近的经纬度值。

【问题讨论】:

movable-type.co.uk/scripts/latlong.html。你根本没有研究 您有具体问题吗?你有没有尝试过? 计算两点之间的距离是一个简单的问题,之前有人问过。我假设您知道如何编写一个循环来遍历您的 List 并找到最小值。 我不仅需要计算坐标之间的距离,而且该距离必须是道路上最短的路线。我可以有一个函数来计算道路中最短根的距离吗 【参考方案1】:

首先你需要一个函数来计算两个地理点之间的距离。见this。然后,您必须定义搜索 nearest neighbour 的策略,这是您问题的技术名称。您有几种方法:

    最简单的是天真的 O(N)。将您的位置与所有 列表中的条目并保持最少。 将列表插入到容器结构中,如 kd-tree 或 网格并在附近的桶中找到最接近的数字。摊销 O(1)

选择真的取决于你的目的是什么以及你需要什么样的效率。

【讨论】:

对于(二维)坐标列表,您会使用哪种排序方式?选项 2 是最好的,但我认为问题不是那么聪明。他只是询问 GPS 坐标之间距离的基本公式,而不是性能。您的回答比问题“更好”。 mm 实际上你是对的,那只适用于单一维度。我会更新答案。 哈哈,很好笑,因为我在面试的时候犯了这个错误,面试官告诉我可能不行,这是对的。然而,第二点非常好。 我应该知道,因为我使用它,但很久以前 :) 感谢您的回答。该链接中的距离计算计算两个经纬度之间的英里数。但我需要计算这两个经纬度的距离矩阵并找到最短的路线。我可以有java函数来计算最短路线距离

以上是关于如何从java中的列表中获取最近的纬度经度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从android中的纬度和经度获取3位国家代码[重复]

如何按距离(以英里为单位)从 C# 中的给定纬度/经度对纬度/经度列表进行排序?

如何使用 ionic 中的 java 脚本从谷歌地图中的地址获取经度和纬度

从显示纬度和经度的2个单独列表中制作坐标列表[重复]

通过纬度和经度从特定半径获取用户[重复]

如何从纬度/经度获取附近的位置?