根据两点的经纬度查询两点间的距离

基于vue

调用的方法里传入四个参数,分别是两个点的纬度经度

this.CaleLength(第一个点的纬度,第一个点的经度,第二个点的纬度,第二个点的经度)

this.CaleLength(34.76984, 113.769852, 34.76984, 114.769852)

 

// 经纬度转换为度分秒形式
rad(d) {
return d * Math.PI / 180.0;
},
// 计算两点经纬度以及两点间的距离(起始地点与结束地点都是东经北纬)
CaleLength(slat, slong, elat, elong) {
// 第一个点的经纬度(当前地点) (起始地点的纬度 startLatitude 起始地点的经度 startLongitude )
let sLat = this.rad(slat)
let sLong = this.rad(slong)

// 第二个点的经纬度 (结束地点的纬度 endLatitude 结束地点的经度 endLongitude )
let eLat = this.rad(elat)
let eLong = this.rad(elong)

// 设置地球的半径为6371km
const EARTH_RADIUS = 6371

// 得到两点见的经纬差
let calcLat = eLat - sLat
let calcLong = eLong - sLong

// 判断经纬差是否为负
if (calcLat < 0) {
calcLat = Math.abs(calcLat)
}
if (calcLong < 0) {
calcLong = Math.abs(calcLong)
}

// 同样可以计算到距离
// let SS = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(calcLat / 2), 2) + Math.cos(sLat) * Math.cos(eLat) *
// Math.pow(Math.sin(calcLong / 2), 2)))
// SS = SS * EARTH_RADIUS
// console.log(SS + "km");

let S = EARTH_RADIUS * Math.acos(Math.cos(sLat) * Math.cos(eLat) * Math.cos(calcLong) + Math.sin(sLat) *
Math.sin(eLat))
S = Math.round(S * 100000) / 100
if (S > 1000) {
console.log(Math.round(S / 1000) + 'KM');
} else {
console.log(S + "M");
}
},

posted @   伊人兮明眸秋水  阅读(633)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示