Skip to content

MySql创建经纬度距离计算函数

TIP

在MySQL中,您可以使用内置的地理空间函数来计算两点之间的距离。首先,您需要确保数据表中有一个地理空间数据类型的列,通常是GEOMETRY或POINT类型。然后,您可以使用ST_Distance_Sphere函数来计算两点之间的距离(以米为单位)。

MySQL函数创建

shell
CREATE FUNCTION `lat_lng_distance` (lat1 FLOAT, lon1 FLOAT, lat2 FLOAT, lon2 FLOAT)
RETURNS FLOAT
DETERMINISTIC
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))),2);
END

MySQL函数调用

shell
-- 根据前端传入经度和维度获取这个距离区间最新的美食信息
	-- lgtd:表示经度
	-- lttd:表示维度
	SELECT
		f.id,
		f.shop_name,
		f.score,
		f.Likes,
		f.lgtd,
		f.lttd,
		lat_lng_distance ( 28.063251, 119.181129, f.lttd, f.lgtd ) AS distance,
		f.update_time 
	FROM
		food f
	WHERE
		f.lgtd IS NOT NULL 
		AND f.lttd IS NOT NULL 
	ORDER BY
	distance 
	LIMIT 1

上次更新于: