手机版

微信小程序计算用户与商家的距离(经纬度距离)

时间:2021-12-04 来源:互联网 编辑:宝哥软件园 浏览:

前言

最近给朋友(商家)写小程序,所以看了很多关于小程序的东西,总结了一下计算距离的线。

思路

有两种方法,各有利弊:1。使用小程序的wx.getLocation方法获取用户的经纬度,然后使用已知商家的经纬度进行计算;2.使用腾讯地图定位服务calculateDistance直接计算。

先熟悉下两个词:* *经度:纬度e :* *以下是两种方法的具体实现。

一、获取用户的位置信息,再进行计算(wx.getLocation)

1.小程序提供了获取用户位置信息的api,所以我们可以直接获取经纬度;2.在百度中拾取坐标系,得到商家的具体经纬度(例如:北京故宫116.403414(经度),39.924091(纬度))。) 3.用公式计算两点的经纬度

代码:

page({ data : } },onLoad:函数(){ var _ this=this_this.findXy() //查询用户与商家的距离},findXy() {//获取用户的经纬度var _ this=thiswx。Getlocation ({type 3360' WGS84 ',Success (RES) {_ this。getdistance (Res. Latitude,Res .经度,39.924091,116.403414)}},Rad3360函数(d){/根据经纬度判断距离返回d * Math.PI/180.0;},获取距离:函数(lat1,lng1,lat2,LNG 2){//lat 1用户的纬度//LNG 1用户的纬度//lat 2商户的纬度//LNG 2商户的纬度var radLat1=this。rad(lat 1);var radLat2=这个。rad(lat 2);var a=rad lat 1-rad lat 2;var b=这个。Rad(lng1) -这个。rad(LNG 2);var s=2 * math . asin(math . sqrt(math . pow(math . sin(a/2),2)math . cos(radla t1)* math . cos(radla T2)* math . pow(math . sin(b/2,2)));s=s * 6378.137s=math . round(s * 10000)/10000;S=s.toFixed(2)' km'/保留两位小数console.log('经纬度计算的距离为:)返回s}}

二、利用腾讯地图的位置服务

1。这里配置的地方多了一点。首先在腾讯定位服务注册,申请密钥,引入依赖。下图中配置的第三步是在小程序的后台进行设置。切记不要找错地方。图:

微信小程序计算用户离商家的距离(利用经纬度求距)(图1)

2.配置完成后,重新编译小程序。3.我们来看看腾讯的api,如何找到腾讯两点的位置——两点找距离。4.看完之后,我们可以看到我们只需要商家的经纬度,所以我们在小程序中进行实验。

//引入SDK核心类VARQQMAPWX=require('././utils/QQ map-WX-JSSDK . js’);page({ OnLoad : function(){ var _ this=this;_this.findShop() //查询用户与商家的距离}、findShop() {//获取商家的地理位置,使用腾讯地图的API//实例化API var _ that=this vardemo=new qqmapwx的核心类((

key: '你申请到的key' // 必填 }); // 调用接口 demo.calculateDistance({ to: [{ latitude: 39.924091, //商家的纬度 longitude: 116.403414, //商家的经度 }], success: function(res) { let hw = res.result.elements[0].distance //拿到距离(米) if (hw && hw !== -1) { //拿到正确的值 //转换成公里 hw = (hw / 2 / 500).toFixed(2) + '公里' } else { hw = "距离太近或请刷新重试" } console.log('腾讯地图计算距离商家' + hw); } }); }})

可能会出现的错误:{status:199,message:'此key未开启webservice功能'},不要紧,打开腾讯位置-key配置,设置一下刚才申请key的详情页面,把下列选项全部勾上,把你小程序的appid也写上。保存完,重新编译再试微信小程序计算用户离商家的距离(利用经纬度求距)(图2)

优缺点

优点:第一种方法,不用配置任何东西,只需两点的经纬度即可,没有使用次数限制;第二种方法,不需要自己计算,腾讯会计算好,距离比较精确,只需要只要商家的经纬度即可


缺点:第一种方法,计算精度上可能有待考量,在我的实验下,感觉是在上帝视角,直接计算两个点的距离,不过好像两点距离不太远,问题不大;下图是我用两种方法计算的杭州-石家庄的距离,方法一显然比腾讯的少一点距离,腾讯可能参考了一些实际的路程、路况之类的吧,感觉跟从地图上查行程规划出来的距离差不多。

微信小程序计算用户离商家的距离(利用经纬度求距)(图3)

第二种方法,有使用次数上的限制,每天只能用1万次,当然可以再去买配额

建议

既然腾讯的api有使用次数限制,那我们就写个方法,先用腾讯的,加上判断,用完了再用 经纬度计算的。当然,有钱的大佬可以另外买腾讯的配额。

版权声明:微信小程序计算用户与商家的距离(经纬度距离)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。