MySQL——lat

阅读: 评论:0

MySQL——lat

MySQL——lat

按照经纬度计算距离

       日常开发中,特别是做微信项目时,经常会遇到根据用户地理位置来展示附近商家的功能,通常解决这种问题的思路是,后台设置商家的经纬度,然后再根据前台传的经纬度进行计算,具体经纬度转换以及前台如何获取,本篇不做详细介绍,可以使用php类方法计算,也可以通过sql语句来计算,在此,主要是介绍利用MySQL创建一个函数,然后在sql语句中使用

 

创建函数:lat_lng_distance(),单位:km,并已截取小数点2位

1 CREATE FUNCTION `lat_lng_distance` (lat1 FLOAT, lon1 FLOAT, lat2 FLOAT, lon2 FLOAT)
2 RETURNS FLOAT
3 DETERMINISTIC
4 BEGIN
5     RETURN ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((lat1 * PI() / 180 - lat2 * PI() / 180) / 2), 2)
6            + COS(lat1 * PI() / 180) * COS(lat2 * PI() / 180)
7            * POW(SIN(( lon1 * PI() / 180 - lon2 * PI() / 180 ) / 2),2))),2);
8 END

 

创建完成,然后再在sql语句中调用即可,下面是截图

1 $shops = Db::name('user')
2   ->field('id,shop_name,shop_address,avatar,average_consume,discount,lat_lng_distance('.$lat.','.$lon.',lat,lon) as distance,get_shop_avg_star(id) as star')
4   ->where($where)
5   ->page($page,10)
6   ->order('distance asc')
7   ->select()->toArray();

其中,$lat,$lon是前台传过来的参数;

本文发布于:2024-01-27 22:08:40,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063645202923.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:MySQL   lat
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23