mysql中两点之间距离的计算

需求背景

最近做电商项目,要求跟根据用户当前位置显示距离用户当前位置十五公里内的商品。 用户当前位置由移动端(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() / 180 - 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值