先不說其他的,直接上SQL語句吧:
convert((6371 * acos(cos(radians(#{latitude})) * cos(radians(SUBSTRING_INDEX(a.coords,',',1))) * cos(radians(SUBSTRING_INDEX(SUBSTRING_INDEX(a.coords,';',1),',',-1)) - radians(#{longitude}))
+ sin(radians(#{latitude})) * sin(radians(SUBSTRING_INDEX(a.coords,',',1))))),decimal(10,1)) AS "distance"
說明:計算的是兩點之間的直線距離
其中 :
latitude------維度,
longitude-------精度,
coords是數據庫存儲貨源的一個起點和終點的經緯度
數據存儲形式如下圖:
經緯度:如上圖所示的值第一列,34.75343400296841爲維度,113.63141597343925爲經度。