2011-11-24 52 views
0

我使用的表格名爲:Properties,使用Google Maps我在後端存儲從Google Map Mark獲得的經度和緯度數據。比率 - 基於經緯度字段的MySQL查詢

在前端,系統讓用戶拖動標記到一個給定的位置(經度和緯度),以自動獲得(這部分很容易使用jquery ajax方法)所有屬性接近,例如在(公里不包括英里): 2公里,5公里,10公里。但說實話,我是Stuck試圖找出如何做這種有效的MySQL查詢。請點亮一些光?

從谷歌文檔,我發現這是在數:

這裏的SQL語句,將尋找最近的20個地點是25英里到37半徑內,-122協調。它根據該行的緯度/經度和目標緯度/經度計算距離,然後僅請求距離值小於25的行,按距離排序整個查詢,並將其限制爲20個結果。要通過公里而非英里搜尋,與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 20 OFFSET 0; 

取代3959我有什麼做的公里查詢或僅僅是轉換的問題,從英里公里?

+2

看起來您回答了您自己的問題:「要以公里而不是英里搜索,請用6371替換3959」。 (1mi = 1.609344km,3959 * 1.609344 =大致6371) – Crontab

+0

此外,您應該閱讀地圖產品的許可證,我不確定您是否允許存儲有關檢索數據的副本。 – Pentium10

回答

3

爲了記錄在案:

看起來你回答了自己的問題:「要依公里而非英里搜尋,與6371. 3959換成」 (1mi = 1.609344km,3959 * 1.609344 =大約6371)