网站首页mysql
mysql根据两个经纬度坐标返回距离函数
发布时间:2017-05-15 01:20:40编辑:slayer.hover阅读(3372)
一、导入mysql存储过程definer[distance]
DROP FUNCTION IF EXISTS `distance`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` FUNCTION `distance`(`lat1` float, `lng1` float, `lat2` float, `lng2` float) RETURNS float NO SQL BEGIN set @num=2 * 6378.137* ASIN(SQRT(POW(SIN(PI() * (lat1-lat2)/ 360), 2) + COS(PI() * lat1 / 180)* COS(lat2* PI() / 180) * POW(SIN(PI() * (lng1-lng2) / 360), 2))); RETURN @num; END ;; DELIMITER ;
二、在sql中直接使用:distance(lat1,lng1, lat2,lng2)
获取当前位置坐标,如:[113.673151, 34.821403], 代入SQL,与库里的坐标进行计算:
SELECT round(DISTANCE(34.821403,113.673151, a.lat,a.lng), 4) as dist FROM `address` a WHERE a.lat>0 AND a.lng>0 LIMIT 1;
dist
7.1397(默认单位:公里)
评论