IT基地
用户登陆
我要注册
用户名或密码错误
登 陆
注 册
IT基地 >Mr.Li的博客 >我要发文
根据经纬度获取两点之间的距离(mysql自定义函数)
作者:Mr.Li   发布时间:2017-04-11 16:39:54   点击数:2389
DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `GETDISTANCE`(lat1 DOUBLE, lng1 DOUBLE, lat2 DOUBLE, lng2 DOUBLE) RETURNS double 
READS SQL DATA
DETERMINISTIC 
BEGIN 
DECLARE RAD DOUBLE;
DECLARE EARTH_RADIUS DOUBLE DEFAULT 6378137; 
DECLARE radLat1 DOUBLE; 
DECLARE radLat2 DOUBLE; 
DECLARE radLng1 DOUBLE; 
DECLARE radLng2 DOUBLE; 
DECLARE s DOUBLE; 
SET RAD = PI() / 180.0; 
SET radLat1 = lat1 * RAD; 
SET radLat2 = lat2 * RAD; 
SET radLng1 = lng1 * RAD; 
SET radLng2 = lng2 * RAD;
SET s = ACOS(COS(radLat1)*COS(radLat2)*COS(radLng1-radLng2)+SIN(radLat1)*SIN(radLat2))*EARTH_RADIUS; 
SET s = ROUND(s * 10000) / 10000; 
RETURN s; 
END$$ 
DELIMITER ;

将此函数在数据库中执行即可调用,调用方式如下:

SELECT *,latitude,longitude,GETDISTANCE(latitude,longitude,30.663262,104.071619) AS distance FROM  mb_shop_ext where 1 HAVING distance<1000 ORDER BY distance ASC LIMIT 0,10

本站部分数据来自软件的自动采集,仅用于学习交流,决不用于商用,如有侵犯您的合法权益,请联系我们删除。
发表技术文档,,记录个人生活,聚集意见领袖,众多IT精英,以我们的技术让开发更便捷。
IT基地版权所有,伪版必究 京ICP备17064610号-1
微信QQ空间QQ好友新浪微博FacebookTwitter
0.0112s