残念ながら、数学は私の強みではありませんでした。私は次のことを行うための最良のアプローチ/式に苦労しています(これをPHPコードに変換する必要があります)。
1)。単一の広いエリアから始めます(たとえば、ヨーロッパ全体をカバーします)
2)。この領域を一連の小さなブロックに分割します(つまり、ある種のグリッドに変換します)
3)。各グリッドブロックの幅は、およそ75kmの距離に対応する必要があります(地球の曲率を考慮に入れて)。
4)。各グリッドブロックの中央の緯度/経度ポイントを計算します
5)。各グリッドブロックの中心点について、緯度/経度のポイント(関心のある場所を表す)の個別のデータベースに対して検索を実行し、各グリッドブロックに最も近い最大5つの関心のあるポイントを見つけます。最も遠いスポットは、グリッドブロックの中心から150km以内にある必要があります。
上記のすべてが完了したら、グリッドブロックとそれに対応する5つの最も近い関心のある場所のデータベースを作成する必要があります。
私の望みは、ランダムな緯度/経度のポイントを取得し、それが含まれる事前計算されたグリッドブロックを(効率的な数式を使用して)計算できるようにして、5つの最も近い関心のあるポイントをすぐに返すことができるようにすることです。高価なコンピューティングを行います。
[注:以下のHighPerformanceMarkの有益な回答に基づいて明確にするために編集]