计算距离
作者:互联网
第一种方法 数据库中直接计算
set global log_bin_trust_function_creators=TRUE;
DELIMITER $$
--
-- 函数
--
CREATE DEFINER=`root`@`localhost` FUNCTION `get_juli`(`longitude` CHAR(20), `latitude` CHAR(20), `longitudea` CHAR(20), `latitudea` CHAR(20)) RETURNS double
BEGIN
#Routine body goes here...
DECLARE result DOUBLE DEFAULT 0;
SET result = round(6378.138*2*asin(sqrt(pow(sin(
(latitude*pi()/180-latitudea*pi()/180)/2),2)+cos(latitude*pi()/180)*cos(latitudea*pi()/180)*
pow(sin( (longitude*pi()/180-longitudea*pi()/180)/2),2)))*1000);
RETURN result;
END$$
DELIMITER ;
第二种方法 根据经纬度计算
function getDistance($lat1, $lng1, $lat2, $lng2){
$radLat1 = deg2rad(floatval($lat1));// deg2rad()函数将角度转换为弧度
$radLat2 = deg2rad(floatval($lat2));
$radLng1 = deg2rad(floatval($lng1));
$radLng2 = deg2rad(floatval($lng2));
if (!$radLat1 || !$radLat2 || !$radLng1 || !$radLng2){
return 0;
}
$a = $radLat1 - $radLat2;
$b = $radLng1 - $radLng2;
$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.138;
// $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.138 * 1000;
return round($s, 2);
}
标签:cos,radLat2,pow,距离,180,计算,pi,sin 来源: https://www.cnblogs.com/chzhcenter/p/16451527.html