您的位置:首页 > 数据库 > MySQL

mysql根据当前定位经纬度排序

2020-04-02 18:46 585 查看

网上流行的大概有两种sql写法,发现两种计算的结果不一样,也就是有一种不是很准确,试了下百度在线api计算结果,发现第二种和百度在线api计算结果一致,应该是最正确的。这里简单的整理下这种。

原文作者: xingguang
原文链接: https://www.tiance.club/post/2178671104.html

用户当前定位经纬度 纬度:lat(23.100571),经度:lat (23.100571) ,经度:lat(23.100571),经度:lng (113.389937)

SELECT
id,
latitude,
longitude
round((
2 * 6378.137 * ASIN(
SQRT(
POW( SIN( PI()*( $lat- latitude )/ 360 ), 2 )+ COS( PI()* $lat / 180 )* COS( latitude * PI()/ 180 )* POW( SIN( PI()*( $lng- longitude )/ 360 ), 2 )))) * 1000
) AS juli
FROM
table(表名)
ORDER BY
`juli`

这里的计算结果是米为单位,如果想要km为单位的话直接去掉最后面的 "1000",这里我是做了四拾伍入,不保留小数点,直接取整数米,如果只是排序的话建议不加round和1000,提高sql执行效率。

另外还有php版的根据当前定位经纬度排序具体文章地址:
https://www.tiance.club/post/1713014064.html

原文作者: xingguang
原文链接: https://www.tiance.club/post/2178671104.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
一直到最后12 发布了0 篇原创文章 · 获赞 1 · 访问量 373 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: