2017-10-20 74 views
0

我正在根據GPS座標對同一位置的價格進行一些比較。 因此,例如我有一個座標爲:PHP/MySQL - 從實際GPS座標查找500米半徑內的所有項目

lat: 45.815005 
lng: 15.978501 

我想在我的MySQL數據庫中搜索每個項目,例如:在那個地方500米。 (它不需要是圓形的,只需要在X上500米,在Y兩種方式上500米)。 Latlng存儲爲一個單獨的列在我的DB型float(10,6)

我知道這並不容易精確計算LNG和緯度的事實,但我很好,如果我錯過幾米每個站點。

這是相當複雜的問題,但我會感謝任何意見,將啓動我的開始。

+1

什麼已經試過和/或研究過? –

+0

它不會是一個圓圈嗎?我認爲你正在尋找半胱氨酸配方。 – chris85

+0

它可能是一個正方形。但是,實際的距離是500米三角形的斜邊,而不是500. – Andreas

回答

2

考慮到半正式公式,計算兩個座標之間的距離實際上並不困難。

SELECT 
    -- stuff here 
    , (6371000 * acos(cos(radians(45.815005)) * cos(radians(stuff.lat)) * cos(radians(stuff.lng) - radians(15.978501)) + sin(radians(45.815005)) * sin(radians(stuff.lat)))) AS distance 
FROM 
    stuff 
HAVING 
    distance < 500 

Referenced Answer

從原來的答案必要的修改:

  1. 在原始回答所提供的恆定供給爲英里或公里的值。我已經改變了這裏的常數來使用米。

  2. 常數已更改爲使用您的座標。您可能需要進一步調整查詢以使這些參數代替常量。

  3. having表達式有所變化,以反映您對500米的渴望。再次,這可能是你想要參數化的東西。

+0

大拇指和接受的答案。謝啦! – Andurit