mysql距離計算,單位m,以及排序
lng 經度 lat 緯度
一般地圖上顯示的坐標順序為,緯度在前(范圍-90~90),經度在后(范圍-180~180)
傳入參數 緯度 40.0497810000 經度 116.3424590000
/*傳入的參數為 緯度 緯度 經度 ASC升序由近至遠 DESC 降序 由遠到近 */
SELECT
id,
name,
address,
ROUND(
6378.138 * 2 * ASIN(
SQRT(
POW(
SIN(
(
40.0497810000 * PI() / 180 - lat * PI() / 180
) / 2
),
2
) + COS(40.0497810000 * PI() / 180) * COS(lat * PI() / 180) * POW(
SIN(
(
116.3424590000 * PI() / 180 - lng * PI() / 180
) / 2
),
2
)
)
) * 1000
) AS 距離
FROM
oc_district
HAVING
距離 < 400000
ORDER BY
距離 ASC
至此,我們就能清楚的查看到緯度 40.0497810000 經度 116.3424590000 距離 小區表中的每個小區到傳入地點的距離(單位 m)
方法二:通過MySQL的POIN方法
st_distance 計算的結果單位是度,需要乘111195(地球半徑6371000*PI/180)是將值轉化為米。
sql:
SELECT *, (st_distance (point (lon,lat),point (116.3424590000,40.0497810000))*111195/1000 )as juli FROM customer ORDER BY juli ASC