/** 计算两经纬度之间的距离,单位是m
* approx distance between two points on earth ellipsoid
*/
getFlatternDistance(lat1, lng1, lat2, lng2) {
let distance = 0
const R = 6371e3; // 地球半径,单位为米
const dLat = this.deg2rad(lat2 - lat1);
const dLon = this.deg2rad(lng2 - lng1);
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(this.deg2rad(lat1)) * Math.cos(this.deg2rad(lat2)) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
distance = (R * c).toFixed(2);
return distance
},
deg2rad(deg) {
return deg * (Math.PI / 180);
},
/** 计算两经纬度之间的距离,单位是km
* approx distance between two points on earth ellipsoid
*/
getFlatternDistance(lat1, lng1, lat2, lng2) {
let distance = 0
const R = 6371; // 地球半径,单位为千米
const dLat = this.deg2rad(lat2 - lat1);
const dLon = this.deg2rad(lng2 - lng1);
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(this.deg2rad(lat1)) * Math.cos(this.deg2rad(lat2)) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
distance = (R * c).toFixed(2);
return distance
},
deg2rad(deg) {
return deg * (Math.PI / 180);
}