2017-10-12 79 views
0

我有一個MySQL的表,其中有三列:LATLONID排序MySQL的記錄,根據座標

現在,當輸入我想用戶贈送一對Lat & long。作爲回報,我想顯示從最近到最遠排序的行。現在

,這個問題的一個解決方案是,取陣列中的所有條目,使臨時陣列,計算距離使用半正矢式的每個項目,推到temp陣列,最後執行任何該數組上的排序算法。

但是,這個操作很重,我想要一個更好的解決方案。有沒有?

P.S:我正在使用PHP腳本。

+0

現有的解決方案看起來不錯。您可能希望提供一個邊界框作爲WHERE子句的一部分,以過濾明顯超出計算範圍的座標 – Strawberry

+1

,您可以直接在sql中使用haversine公式並對結果值進行排序。 – scaisEdge

回答

1

簡要回答:沒有。

長答案:也許。如果你在一個給定的和極其有限的半徑範圍內工作,你可以通過在lat和lng每十分之一的距離建立一個固定的值來簡化這些事情,並且應用小假使用([delta lat squared + delta lng squared]的平方根] )。

但是,這隻適用於非常接近您的中心點的點。