一、通过经纬度测距
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);
}
});
}
})