在 PHP 中查找最接近的纬度/lng 以获取输入值数组


Find closest lat/lng in PHP for an array of input values

我的代码,对于一个经度/经度对的数组,从另一个数组中找到最接近的经度/经度对:

输入:

$reference_array ,这是一个关联数组,其中键是"标签",值是该标签的纬度/经度。例如,它可以将城镇名称与城镇的质心匹配。

$input_array ,这是一个经度/经度对的列表。

我需要从$reference_array中找到最接近$input_array中每个点的标签。我还有一个最大半径,因此任何不在该半径内的最近点都会被赋予 null 的"最近标签"。

我有有效的代码 - 我遍历每个数组,计算每对之间的距离,然后记录$input_array中每个点的最近标签(及其距离)。这行得通,和这道题基本一样,但效率不高,我的脚本超时,点相对较少。我无法控制$reference_array的大小,因此总是需要执行大量比较。

我的问题 - 我可以使用哪些数据结构或算法来提高此计算的效率?

如果首先检查点是否包含在边为 2 * 半径的正方形中,您可以提高效率。 比较运算的负载比距离的计算要小得多。