当前位置: 移动技术网 > IT编程>数据库>Mysql > mysql中两点之间距离的计算

mysql中两点之间距离的计算

2020年07月27日  | 移动技术网IT编程  | 我要评论

需求背景

最近做电商项目,要求跟根据用户当前位置显示距离用户当前位置十五公里内的商品。 用户当前位置由移动端(Android,ios)传递到后台,商品表里面保存当前商品所在店铺的经纬度。也就是已知两个点的经纬度信息求两点间的距离。 对于两点之间的距离,在mysql中可以根据两点的经纬度进行计算。

 

SQL实现:

SELECT
	round(
		6378.138 * 2 * asin(sqrt(pow(sin(
						(A点的纬度 * pi() / 180 - B点的纬度 * pi() / 180) / 2
					),2) + cos(A点的纬度 * pi() / 180) * cos(B点的纬度 * pi() / 180) * pow(
					sin((A点的经度 * pi() / B点的经度 * pi() / 180) / 2),2))
		) * 1000
	)

具体操作

现在已知两点坐标为:天府广场(104.066546,30.657462)  天府公园(104.072704,30.431714),将这两点的坐标填入上面的sql为:

select  round(6378.138*2*asin(sqrt(pow(sin((
30.657462    #A点的纬度
*pi()/180-
30.431714    #B点的纬度
*pi()/180)/2),2)+cos(
30.657462    #A点的纬度
*pi()/180)
*cos(
30.431714     #B点的纬度  
*pi()/180)* pow(sin((
104.0665460   #A点的经度
*pi()/180-
104.072704    #B点的经度
*pi()/180)/2),2)))*1000)

执行结果为:

这里的单位是米,可以看出这里两点的距离大概为25公里,跟用高德地图搜索的距离相差不大。

关于测试的时候如何找到指定位置的经纬度,可以利用高德地图获取,具体链接:https://lbs.amap.com/api/javascript-api/example/map/click-to-get-lnglat

本文地址:https://blog.csdn.net/u010972055/article/details/107563630

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网