根据两点的经纬度查询两点间的距离
基于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");
}
},
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通