78.3232、65.3234座標から半径30マイル以内にある最も近い20の場所を検索するSQLステートメント。その行の緯度/経度とターゲットの緯度/経度に基づいて距離を計算し、距離値が30マイル未満の行のみを要求し、距離でクエリ全体を順序付け、20の結果に制限します。マイルではなくキロメートルで検索するには、3959を6371に置き換えます。
SELECT
id, (
3959 * acos (
cos ( radians(78.3232) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(65.3234) )
+ sin ( radians(78.3232) )
* sin( radians( lat ) )
)
) AS distance
FROM markers
HAVING distance < 30
ORDER BY distance
LIMIT 0 , 20;
これは、既にお持ちのMySQLバックエンドでGoogle Maps API v3を使用しています。
https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql