不幸的是,数学从来都不是我的强项,我正在努力寻找最好的方法/公式来执行以下操作(然后我需要将其转换为 PHP 代码):
1)。从一个单一的大区域开始(例如覆盖整个欧洲)
2)。将此区域分解为一系列较小的块(即,将其变成各种网格)
3)。每个网格块的宽度应大致对应于 75 公里的距离(考虑到地球的曲率)。
4)。计算每个网格块的中心纬度/经度点
5)。对于每个网格块的中心点,针对单独的纬度/经度点数据库(代表感兴趣的地方)运行搜索,以找到每个网格块最多 5 个最近的感兴趣点。最远的兴趣点距离网格块中心不得超过 150 公里。
完成上述所有操作后,我应该得到一个网格块数据库及其对应的 5 个最近的兴趣点。
我的希望是,然后我应该能够获取任何随机纬度/经度点并计算(使用有效的数学公式)它属于哪个预先计算的网格块,因此能够立即返回 5 个最近的兴趣点而不必做任何昂贵的计算。
[注:为清楚起见根据下面高性能标记的有用回复进行了编辑]