私は2つのテーブルを取得しました:
Events:
- id
- name
- place
Places:
- id
- name
- lat
- lng
andから(場所&10KM radius
に基づいて) にあるすべてのイベントを取得したいと思います。どうやってやるの?lat
lng
current
lat
lng
ありがとう!
拡張機能を使用する場合、MySQL 5.6 以降の地理空間拡張機能は、まさにこのタイプの質問に対処することを目的としています。場所テーブルに空間インデックスを作成する必要があります。
ALTER TABLE places ADD SPATIAL INDEX lat, lng
select name from places
order by st_distance(point(@lng, @lat), point(lng, lat))
limit 10
実際の距離の実際の検出は、少し計算量が多いです。次の投稿では、試してみたいと思われるいくつかの方法について説明しています: http://www.plumislandmedia.net/mysql/using-mysqls-geospatial-extension-location-finder/
多分これはあなたに役立ちますhttp://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL
基本的に問題は、lat/lng が球座標 (lat と lng は角度) であり、球面上の直線距離を使用して検索を行うことです。次に、2 つの異なるもの、つまり角度とキロメートルを比較しようとしています。そのためには、座標変換を行ってから比較する必要があります。
この簡単なクエリが役立つことを願っています
SELECT
*
FROM
`locator`
WHERE
SQRT(POW(X(`center`) - 49.843317 , 2) + POW(Y(`center`) - 24.026642, 2)) * 100 < `radius`
詳細はこちらhttp://dextr.com/post/83498801191/how-to-determine-point-inside-circle-using-mysql