MySQL计算两坐标之间的距离,查询某个点附近的数据根据距离排序。
21-07-05 12:09
字数 725
阅读 1548
已编辑
产品有个需求是查出当前用户附近的餐厅,记录一下:
SELECT
id,
`name`,
lat,
lng,
6378.138 * 2 * ASIN(
SQRT(
POW( SIN( ( 40.00412368774414 * PI() / 180 - lat * PI() / 180 ) / 2 ), 2 ) + COS( 40.00412368774414 * PI() / 180 ) * COS( lat * PI() / 180 ) * POW( SIN( ( 116.40998077392578 * PI() / 180 - lng * PI() / 180 ) / 2 ), 2 )
)
) * 1000 AS distance
FROM
`restaurant`
WHERE
lat IS NOT NULL
AND lng IS NOT NULL
ORDER BY
distance ASC,
id DESC
计算公式
对上面的公式解释如下:
Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度; a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度之差; 6378.137为地球半径,单位为千米; 计算出来的结果单位为千米,若将半径改为米为单位则计算的结果单位为米。 计算精度与谷歌地图的距离精度差不多,相差范围在0.2米以下。
参考
0人点赞>
0 条评论
排序方式
时间
投票
快来抢占一楼吧
请登录后发表评论
相关推荐
文章归档
2024-11
1 篇
2024-06
1 篇
2024-05
2 篇
2024-04
2 篇
2024-03
2 篇
展开剩余 68 条
2024-01
1 篇
2023-10
1 篇
2023-09
1 篇
2023-08
1 篇
2023-06
1 篇
2023-04
1 篇
2022-12
2 篇
2022-06
1 篇
2022-04
4 篇
2022-03
3 篇
2022-01
6 篇
2021-12
2 篇
2021-11
2 篇
2021-10
2 篇
2021-09
1 篇
2021-08
2 篇
2021-07
4 篇
2021-06
1 篇
2021-05
3 篇
2021-04
3 篇
2021-01
2 篇
2020-11
1 篇
2020-10
3 篇
2020-09
2 篇
2020-08
1 篇
2020-07
5 篇
2020-06
5 篇
2020-05
1 篇
2020-04
1 篇
2020-03
2 篇
2020-02
3 篇
2020-01
1 篇
2019-11
5 篇
2019-10
10 篇
2019-09
12 篇
2019-08
17 篇
2019-07
8 篇
2019-05
3 篇
2019-04
8 篇
2019-03
7 篇
2019-02
8 篇
2019-01
5 篇
2018-12
7 篇
2018-11
8 篇
2018-10
4 篇
2018-09
7 篇
2018-08
12 篇
2018-07
9 篇
2018-06
6 篇
2018-05
11 篇
2018-04
18 篇
2018-03
1 篇
2018-02
2 篇
2018-01
10 篇
2017-12
14 篇
2017-11
44 篇
2017-10
13 篇
2017-09
4 篇
2017-08
12 篇
2017-07
5 篇
2017-06
4 篇
2017-05
2 篇
2017-04
3 篇
2017-03
9 篇
2017-02
3 篇
2017-01
2 篇
2016-12
10 篇
2016-11
4 篇
最新文章
最受欢迎
11-07 19:00
06-26 11:51
05-17 17:08
05-17 10:59
04-11 17:05
13 评论
11 评论
10 评论