半正矢関数を検索する必要がありますが、良いスタートは次のようになります。
- PHP、MySQL、Googleマップを使用した店舗検索の作成 -セクション「MySQLを使用した場所の検索」を参照してください
- MySQLを使用した地理/空間検索
最初のURLからの引用:
これは、37、-122座標から半径25マイル以内にある最も近い20の場所を見つけるSQLステートメントです。その行の緯度/経度とターゲットの緯度/経度に基づいて距離を計算し、距離の値が25未満の行のみを要求し、クエリ全体を距離順に並べ替えて、結果を20に制限します。マイルではなくキロメートルで検索するには、3959を6371に置き換えます。
SELECT
id,
( 3959
* acos( cos( radians(37) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(-122) )
+ sin( radians(37) )
* sin( radians( lat ) )
)
)
AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;