计算公式
根据经纬度计算距离公式
对上面的公式解释如下:
- Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度;
- a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度之差;
- 6378.137为地球半径,单位为千米;
- 计算出来的结果单位为千米,若将半径改为米为单位则计算的结果单位为米。
- 计算精度与谷歌地图的距离精度差不多,相差范围在0.2米以下。
参数说明
lng:经度
lat:纬度
地球半径:6378.137(千米)
一般地图上显示的坐标顺序为,纬度在前(范围-90 ~ 90),经度在后(范围-180 ~ 180)
sql语句
参考使用(可以更具自己的要求进行修改)
PI() 是 π函数
ASIN 是 反正弦函数
POW 平方
SIN 正弦函数
COS 余弦函数
. l a t . l a t . lat. lat . lat.lat.lng. lng 经纬度变量,就不多做解释了
SELECT
*,
6378.138 * 2 * ASIN(
SQRT(
POW(
SIN(
(
'.$lat.' * PI() / 180 - lat * PI() / 180
) / 2
), 2
) + COS('.$lat.' * PI() / 180) * COS(lat * PI() / 180) * POW(
SIN(
(
'.$lng.' * PI() / 180 - lng * PI() / 180
) / 2
), 2
)
)
) *1000 AS distance
FROM
distance
ORDER BY
distance ASC