** js | uniapp:计算两点经纬度距离**
//获取当前位置经纬度
const getSelfLocation = function() {
let location = {
lat: 0, //维度
lng: 0, //经度
}
return new Promise((resolve, reject) => {
uni.getLocation({
type: 'gcj02', // 使用国标坐标系
isHighAccuracy: true, // 高精度定位,会调用gps获取高精度坐标
success(res) {
location.lat = res.latitude
location.lng = res.longitude,
resolve(location);
},
fail(err) {
reject(location);
}
})
})
}
//进行经纬度转换为距离的计算
function Rad(d) {
return d * Math.PI / 180.0; //经纬度转换成三角函数中度分表形式。
}
//计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度
// const GetDistance = async (lat1, lng1,lat2,lng2) => {
const GetDistance = async (lat1, lng1) => {
const res = await getSelfLocation()
console.log(res.lat, res.lng, '自己的位置');
console.log(lat1, lng1);
let lat2 = res.lat; //维度
let lng2 = res.lng; //经度
var radLat1 = Rad(lat1);
var radLat2 = Rad(lat2);
var a = radLat1 - radLat2;
var b = Rad(lng1) - Rad(lng2);
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; // EARTH_RADIUS;
s = Math.round(s * 10000) / 10000; //输出为公里
//s=s.toFixed(4);
console.log(s, '公里');
return s;
}