3
我正在尋找一個快速MySQL查詢,從一個簡單的表格返回最近的位置:查找子公司經度和緯度(地理位置)
表:locations
:
id | city | latitude | longitude
-----------------------------------------------
1 | Berlin | 52.524268 | 13.406290
-----------------------------------------------
2 | London | 51.508129 | -0.1280050
-----------------------------------------------
3 | Hamburg | 53.551084 | 9.9936817
-----------------------------------------------
$intLat = '52.370215700000000000'; // lat Amsterdam
$intLon = '4.895167899999933000'; // lon Amsterdam
大多數提供的示例@SO基於距離計算。
即使座標從Birmingham,它返回id=1
(柏林)。 查詢應該返回倫敦,因爲它比柏林更近。不應該?
SELECT *, (3959 * acos(cos(radians($intLat))
* cos(radians(latitude))
* cos(radians(longitude)
- radians($intLon)) + sin(radians($intLat))
* sin(radians(latitude)))) AS distance
FROM locations
HAVING distance < 10
AND id IN(1,2,3)
LIMIT 1;
你將需要按計算出的距離ASC,使限採最低距離結果 –
@MarkBaker OMG我洙笨...謝謝! – mate64
愚蠢是我們學習的方式:我們對它很尷尬,我們再也不會犯同樣的錯誤:) –