js | uniapp:计算两点经纬度距离

2,027 阅读1分钟

** 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;
}