mysql函数通过经纬度计算亮点距离
mysql
第一个点的经纬度参数为 :cur_lat、cur_lng;
第二个点的经纬度参数为 :job_lat、job_lng;
最后返回为具体的米数。
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) BEGIN 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;
你的指尖,有着改变世界的力量!