利用MySQL计算两点地理坐标之间的距离

需求:

手机APP中,查询距离我1公里范围内所有的商家。

分析:

关键是如何根据两点之间的坐标求出这两点之间的距离;

解决方案:

利用MySQL存储函数计算距离并做处理;

-- 获取两坐标点的距离(单位:米)
-- lng1 经度1
-- lat1 纬度1
-- lng2 经度2
-- lat2 纬度2
CREATE FUNCTION `get_distance` (
	lng1 DOUBLE,
	lat1 DOUBLE,
	lng2 DOUBLE,
	lat2 DOUBLE
) RETURNS DOUBLE
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(
						(
							lng1 * PI() / 180 - lng2 * PI() / 180
						) / 2
					),
					2
				)
			)
		) * 1000
	);
END;

参数为两点之间的坐标,返回结果为距离,单位为米

 

你可能感兴趣的:(坐标,存储函数)