mysql 计算经纬度的距离
DROP FUNCTION IF EXISTS `getDistance`; CREATE DEFINER=`root`@`%` FUNCTION `getDistance`(`cur_lat` float(20),`cur_lng` float(20),`job_lat` float(20),`job_lng` float(20)) RETURNS bigint(20) DETERMINISTIC BEGIN -- cur_lat:当前纬度 -- cur_lng:当前经度 -- job_lat:工作的纬度 -- job_lng:工作的经度 DECLARE earthRadius int unsigned default 6367000; DECLARE PI FLOAT unsigned default PI(); DECLARE calcLongitude,calcLatitude FLOAT default 0; DECLARE stepOne,stepTwo FLOAT unsigned default 0; DECLARE calculatedDistance FLOAT unsigned default 0; SET cur_lat=(cur_lat*PI)/180; SET cur_lng=(cur_lng*PI)/180; SET job_lat=(job_lat*PI)/180; SET job_lng=(job_lng*PI)/180; SET calcLongitude=job_lng-cur_lng; SET calcLatitude=job_lat-cur_lat; SET stepOne = pow(sin(calcLatitude / 2), 2) + cos(cur_lat) * cos(cur_lat) * pow(sin(calcLongitude / 2), 2); SET stepTwo = 2 * asin(LEAST(1, sqrt(stepOne))); SET calculatedDistance = earthRadius * stepTwo; RETURN calculatedDistance; END;
你的指尖,有着改变世界的力量!