实现思路:先通过 uni.getLocation 接口获取当前位置获取当前位置,再与点击经纬度进行计算得出相差距离。
1.获取当前位置
需要先在manifest.json配置文件开启获取位置权限
//获取当前位置
getLocation() {
let location = {
lat: 0,
lng: 0,
}
return new Promise((reserve, reject) => {//因为获取位置是异步接口所以需要使用promise
uni.getLocation({
success(res) {
location.lat = res.latitude
location.lng = res.longitude,
reserve(location);
},
fail(err) {
reject(location );//获取失败则返回经纬坐标为0
}
})
})
},
2.调用获取位置方法,计算距离
//根据金纬度计算距离
distance(lat1, lng1) {
var that = this;
console.log('计算地点经纬度:', lat1, lng1);
this.$utils.getLocation().then((res) => {
console.log('我的位置:', location);
let lat2 = res.lat;
let lng2 = res.lng;
let rad1 = lat1 * Math.PI / 180.0;
let rad2 = lat2 * Math.PI / 180.0;
let a = rad1 - rad2;
let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
let s = 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)));
s = s * 6378.137;
s = Math.round(s * 10000) / 10000;
s = s.toString();
s = s.substring(0, s.indexOf('.') + 2);
console.log('距离:', s);
return s;//返回距离
});
},
效果图