微信小程序计算用户到商家的距离

一、通过经纬度测距

 getDistance: function(lat1, lng1, lat2, lng2) {

    // lat1用户的纬度
    // lng1用户的经度
    // lat2商家的纬度
    // lng2商家的经度
    var radLat1 = lat1* Math.PI / 180.0;
    var radLat2 = lat2* Math.PI / 180.0;
    var a = radLat1 - radLat2;
    var b = (lng1* Math.PI / 180.0) - (lng2* Math.PI / 180.0);
    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
    s = s * 6378.137;//地球半径
    s = Math.round(s * 10000) / 10000;
    s = s.toFixed(2) + 'km' //保留两位小数
    console.log('经纬度计算的距离:' + s)
    return s;
  }
}

获取用户经纬度的方法参照wx.getLocation()

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

// 引入SDK核心类
var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
Page({
 onLoad: function() {
        var _this = this;
        _this.findShop() //查询用户与商家的距离
        },
 findShop() { //拿到商家的地理位置,用到了腾讯地图的api
        // 实例化API核心类
        var _that = this
        var demo = 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);
            }
        });
    }
})

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值