PHP をサーバー スクリプト言語として使用し、MySQL をデータベースとして使用して、Geo Proximity Search 機能を備えたアプリケーションを作成しています。
状況を考えてみましょう:
それぞれのオブジェクトに関連付けられた緯度と経度の位置を持つオブジェクトの特定のセットがある場合。国や都市などの場所の詳細を KM の範囲/半径とともに指定すると、たとえば MySQL クエリを使用して、その半径/範囲内にあるオブジェクトを取得します。
SELECT [columns]
FROM [column]
WHERE 1=1
AND 3963.191 *
ACOS(
(SIN(PI() * [latitude] / 180) * SIN(PI() * [column].latitude / 180)) +
(COS(PI() * [latitude] /180) * cos(PI() * [column].latitude / 180) * COS(PI() * [column].longitude / 180 - PI() * [longitude] / 180)) )
<= 10
上記の計算により、地球上の国/都市の中心点から 10 KM の範囲内にあるオブジェクトが得られます。
ここで、この 10 KM エリアにない 1 つのオブジェクト (緯度と経度を含む) があるとします。たとえば、地球上の国/都市の中心点から 15 KM です。このオブジェクトのサービス範囲は 10 KM です (最大 10 KM のエリアにサービスを提供します)。
問題は、国/都市の中心点から 10 KM の範囲内のオブジェクトを探している場合、サービス範囲が 10 KM のオブジェクト (国/都市の中心点から 15 KM) も検索に含める必要があるということです。
どうすれば可能になりますか?国/市の中心部の緯度、経度座標、範囲/半径 (オブジェクトを見つける必要がある)、および配達半径 (たとえば 10 KM) を持つオブジェクトとそれに対応する座標があります。
PHP、MySQL を使用してそれを行う方法を教えてもらえますか?