计算两点经纬度的距离

xiaoxiao2021-02-28  95

mysql 函数

DROP FUNCTION IF EXISTS func_calcDistance; CREATE FUNCTION func_calcDistance( origLng DECIMAL(20,6), origLat DECIMAL(20,6), longitude DECIMAL(20,6), latitude DECIMAL(20,6) ) RETURNS DOUBLE BEGIN DECLARE result DOUBLE DEFAULT 0; SET result = round(6378.138*2*asin( sqrt(pow(sin((origLat*pi()/180-latitude*pi()/180)/2),2)+ cos(origLat*pi()/180)*cos(latitude*pi()/180)*pow(sin((origLng*pi()/180-longitude*pi()/180)/2),2)))*1000); RETURN result; END;

IN RUBY MIGRATION

ActiveRecord::Base.connection.execute <<-SQL DROP FUNCTION IF EXISTS func_calcDistance; CREATE FUNCTION func_calcDistance( origLng DECIMAL(20,6), origLat DECIMAL(20,6), longitude DECIMAL(20,6), latitude DECIMAL(20,6) ) RETURNS DOUBLE BEGIN DECLARE result DOUBLE DEFAULT 0; SET result = round(6378.138*2*asin( sqrt(pow(sin((origLat*pi()/180-latitude*pi()/180)/2),2)+cos(origLat*pi()/180)*cos(latitude*pi()/180)*pow(sin((origLng*pi()/180-longitude*pi()/180)/2),2)))*1000); RETURN result; END SQL LastestDeviceLocation.select("func_calcDistance() as distance").order("distance")
转载请注明原文地址: https://www.6miu.com/read-75424.html

最新回复(0)