计算城市之间的距离
首先我们要获取当前位置的经度和纬度,直接调用小程序提供的api接口就可以了
wx.getLocation({
success: function (res) {
that.setData({
fromLng: res.longitude,
fromLat: res.latitude
})
}
})
根据你们后台返回数据的情况确定,如果直接返回经度和纬度那么就可以直接使用,如果返回的是地址如某某市某某区这样的,那么我们就需要逆解析地址,来获取经度和纬度
eg:
wx.request({
url: 'https://apis.map.qq.com/ws/geocoder/v1/',
data: {
"key": "你的腾讯地图 key",
"address": "目的地"
},
method: 'GET',
success: function (res) {
if (res.data.result) {
const addressLocation = res.data.result.location;
const courseLat = addressLocation.lat;//获取目的地的纬度
const courseLng = addressLocation.lng;//获取目的地的经度
}
that.setData({
toLat: courseLat,
toLng:courseLng
})
}
})
定义一个函数用于计算距离(复制粘贴即可使用,注意传参的时候,经纬度别搞错了)
getDistance: function(lat1, lng1, lat2, lng2) {
lat1 = lat1 || 0;
lng1 = lng1 || 0;
lat2 = lat2 || 0;
lng2 = lng2 || 0;
var rad1 = lat1 * Math.PI / 180.0;
var rad2 = lat2 * Math.PI / 180.0;
var a = rad1 - rad2;
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
var r = 6378.137;
var distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)));
return distance;
}