高德地图获取坐标距离_高德地图获取两个经纬度点间直线距离JS/PHP/SQL代码

在开发中,为了显示用户附近一定范围内的商家和产品,需要计算经纬度坐标之间的距离。本文介绍了如何利用高德地图API提供的方法,转换成JS、PHP和SQL代码来准确计算两个经纬度点间的直线距离,解决了网上算法不准确的问题。
摘要由CSDN通过智能技术生成

最近做了几个小站,要求要定位到当前地址并且显示附近多少公里内的商家和产品。

定位好办,直接用高德地图搞定。有不需要显示地图又需要定位的页面把地图直接隐藏掉都可以。或者可以直接调用高德的定位组件。

但是显示附近多少公里的商家和产品就难搞了。商家和产品加好经纬度地址,然后定位一个地址,通过这两个经纬度地址去算他们间的距离。

网上找了好多,基本上都是同一个算法:

ACOS(SIN((PI() / 180) * 114.055036) * SIN((PI() / 180) * 114.114627) + COS(SIN((PI() / 180) * 114.055036) * COS((PI() / 180) * 114.114627) * COS((PI() / 180) * 22.904124 - (PI() / 180) * 22.52153)) * 6371;

然而并没多大软用,距离算不正确,与实际距离相差挺大

所以我想到直接到高德地图去扒他的测距的方法。

找了好久找到他的原生方法

var d = Math.PI/180

, e = Math.cos

, f = b.P * d

, h = c.P * d

, k = 2 * 6378137

, d = c.Q * d - b.Q * d

, e = (1 - e(h - f) + (1 - e(d)) * e(f) * e(h)) / 2;

return k * Math.asin(Math.sqrt(e))

然后转成SQL语句

12756.274 * asin(sqrt((1-cos(cp * pi()/180 - bppi()/180)+(1-cos(cqpi()/180 - bqpi()/180))cos(bppi()/180)cos(cp*pi()/180))/2))

然后套用为php代码

$list = model('seller')->query('(12756.274 * asin(sqrt((1-cos('.$longitude.' * pi()/180 - longitudepi()/180)+(1-cos('.$latitude.'pi()/180 - latitudepi()/180))cos(longitudepi()/180)cos('.$longitude.'*pi()/180))/2))) < 5');

搞定,收工,就是这么简单,不知道大家是否看懂了,若没有看懂八叔模版堂欢迎大家前来吐槽。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值