过程推导就不说了,需要一定的数学功底,直接上方法,在Mysql创建一个距离函数,可直接套用。
方法一:
delimiter $$
use `depot` $$
DROP FUNCTION IF EXISTS `distance_1`$$
create function distance_1(lat1 float, lon1 float,lat2 float,lon2 float) returns int
begin
return round(6378.138*2*asin(sqrt(pow(sin((lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)*pow(sin( (lon1*pi()/180-lon2*pi()/180)/2),2)))*1000);
end
$$
delimiter ;
方法二:
delimiter $$
DROP FUNCTION IF EXISTS `distance_2`$$
create function distance_2(lat1 VARCHAR(255), lon1 VARCHAR(255),lat2 VARCHAR(255),lon2 VARCHAR(255)) returns int
begin
set lat1=convert(lat1,DECIMAL(10,7));
set lat2=convert(lat2,DECIMAL(10,7));
set lon1=convert(lon1,DECIMAL(10,7));
set lon2=convert(lon2,DECIMAL(10,7));
return round(6378.138*2*asin(sqrt(pow(sin((lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)*pow(sin( (lon1*pi()/180-lon2*pi()/180)/2),2)))*1000);
end
$$
delimiter ;