在PHP中查找输入值数组中最接近的lat/lng

在PHP中查找输入值数组中最接近的lat/lng,php,arrays,maps,Php,Arrays,Maps,我的代码是,对于一个lat/long对数组,从另一个数组中查找最近的lat/long对: 输入: $reference_array,这是一个关联数组,其中键是“标签”,值是该标签的纬度/长度。例如,它可以将城镇名称与城镇的质心相匹配 $input_array,这是一个lat/long对的列表 我需要从$reference\u array中找到最靠近$input\u array中每个点的标签。我还有一个最大半径,所以任何不在该半径内的最近点都会被赋予“最近的标签”null 我有代码可以工作-我迭代

我的代码是,对于一个lat/long对数组,从另一个数组中查找最近的lat/long对:

输入:

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

$input_array
,这是一个lat/long对的列表

我需要从
$reference\u array
中找到最靠近
$input\u array
中每个点的标签。我还有一个最大半径,所以任何不在该半径内的最近点都会被赋予“最近的标签”null

我有代码可以工作-我迭代每个数组,计算每对之间的距离,然后在
$input\u array
中记录每个点的最近标签(及其距离)。这是可行的,基本上与相同,但效率不高,而且我的脚本的计时点相对较少。我无法控制
$reference\u array
的大小,因此总是需要执行大量比较


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

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

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