最近在做有关车辆定位及历史轨迹的项目,需要显示车辆当前位置信息、车辆历史轨迹及行驶公里数,需要这样的效果。

轨迹回放使用的百度的路书功能,包含了开始、暂定、重置功能,但是后台返回的数据只包含了坐标点,

行驶里程数需要前台页面计算。开始查资料,百度提供计算里程的api,提供开始和结束的几个坐标点,再选择是骑车、步行、驾车、是否走高速之类的条件,百度自动计算行车里程,但是这种误差相对比较大,于是放弃。换了另一种方案,根据两个坐标点计算段之间的距离,再累加,这种计算的是实际行驶的里程,开始coding。

先找到计算两个坐标点之间距离的方法

// 计算两个坐标点距离
getFlatternDistance(lon1, lat1, lon2, lat2) {var DEF_PI = 3.14159265359; // PIvar DEF_2PI = 6.28318530712; // 2*PIvar DEF_PI180 = 0.01745329252; // PI/180.0var DEF_R = 6370693.5; // radius of earthvar ew1, ns1, ew2, ns2;var dx, dy, dew;var distance;// 角度转换为弧度ew1 = lon1 * DEF_PI180;ns1 = lat1 * DEF_PI180;ew2 = lon2 * DEF_PI180;ns2 = lat2 * DEF_PI180;// 经度差dew = ew1 - ew2;// 若跨东经和西经180 度,进行调整if (dew > DEF_PI) dew = DEF_2PI - dew;else if (dew < -DEF_PI) dew = DEF_2PI + dew;dx = DEF_R * Math.cos(ns1) * dew; // 东西方向长度(在纬度圈上的投影长度)dy = DEF_R * (ns1 - ns2); // 南北方向长度(在经度圈上的投影长度)// 勾股定理求斜边长distance = Math.sqrt(dx * dx + dy * dy).toFixed(0);return distance;
}

获取坐标集合,调用计算公式

// 计算里程数
calculateMileage(history) {let mileage = 0;for (let i = 0; i < history.length - 1; i++) {mileage += parseInt(this.getFlatternDistance(history[i].longitude,history[i].latitude,history[i + 1].longitude,history[i + 1].latitude));}this.mileage =mileage == 0 ? "--:--" : (mileage / 1000).toFixed(2) + "公里";
}

mileage就是最后的里程数。看下计算时间

749个坐标点,用时1.39501953125ms,对页面显示影响不大。至此结束。

js根据经纬度换算行驶里程相关推荐

  1. java 计算行驶里程,js根据经纬度换算行驶里程

    最近在做有关车辆定位及历史轨迹的项目,需要显示车辆当前位置信息.车辆历史轨迹及行驶公里数,需要这样的效果. 轨迹回放使用的百度的路书功能,包含了开始.暂定.重置功能,但是后台返回的数据只包含了坐标点, ...

  2. Python调用高德地图API实现经纬度换算、地图可视化

    作者 | 糖甜甜甜 出品 | 经管人学数据分析 Python调用高德地图API实现经纬度换算.地图可视化 前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地 ...

  3. python 根据经纬度 调取和显示地图_Python调用高德地图API实现经纬度换算、地图可视化-站长资讯中心...

    目前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请 ...

  4. 你还在为高德地图找不到门牌号等详细地址而烦恼吗?你还在等什么——Python调用高德地图API实现经纬度换算、地图可视化

    Python调用高德地图API实现经纬度换算.地图可视化 前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出 ...

  5. python调用高德地图api 可视化_Python调用高德地图API实现经纬度换算、地图可视化...

    前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请密 ...

  6. nedc和epa续航里程什么意思_为何特斯拉的锂电池行驶里程至今仍无人超越?

    自从特斯拉推出电动车之后,其电池行驶里程数就成为了业界的顶端,至今仍无人能超越,不论是后进的国产电动车品牌,或者是国际传统车厂,在同样电池容量下的可行驶里程都远远落后于特斯拉. 这是因为特斯拉掌握了什 ...

  7. 蔚来用户累计行驶里程超30亿

    10月5日消息,据蔚来官方微博发布的数据显示,2021年10月4日8点39分,蔚来用户累计行驶里程超30亿.这一刻,共有13,892台蔚来车辆,在全球不同角落愉悦前行. 根据此前发布的数据显示,202 ...

  8. 输入某辆小轿车三次的 耗油量(升)和行驶里程(公里),计算平均油耗(升/百公里)。

    double h1,h2,h3,x1,x2,x3,average,y; Scanner sc=new Scanner(System.in); System.out.println("请输入轿 ...

  9. 米转经纬度_经纬度换算米(经纬度精度换算米数)

    经度113度55分24秒.纬度22度29分3秒. 经纬度的距离都是一度=111公里.一公里=1000米,经纬度分度.分.秒都是60进制. 记忆中好象是每一度是1852米,也就是一海里.那么既然知道了一 ...

最新文章

  1. u盘循环冗余能修复吗_古董修复能修复吗?-恩平 - 商业服务
  2. 牛顿法求解非线性方程的根
  3. maya怎么保持2u_【肘进健康】手肘超伸怎么练?
  4. EM上的按钮是方框的问题
  5. 强化学习(十)Double DQN (DDQN)
  6. Linux加密框架 crypto 算法模板 CBC模板举例
  7. Fail to convert to internal representation
  8. OpenCV笔记之六(4)——图像处理之颜色通道拆分、合并及颜色空间
  9. Date setMonth(date.getMonth - 1)
  10. 微软Xbox击败PS4 主导“黑五”游戏机市场
  11. CSS3——制作带动画效果的小图片
  12. 索骥馆-编程语言之《算法引论-一种创造性方法》扫描版[PDF]
  13. C# Winform 置顶属性Topmost 的误区
  14. Mac Chrome 访问证书有问题的https网站时无法忽略风险继续浏览
  15. java gui是什么_Java GUI编程(一)
  16. 关键路径 详解 (前置知识:拓扑排序)
  17. PHP微信公众开发笔记(二)
  18. Java聊天室的设计与实现
  19. java中Sources目录Resources目录的区别
  20. 130292015013蔡晓达第壹章作业

热门文章

  1. 异步FIFO设计原理及Verliog源代码
  2. PS磨皮从此不求人 运用高斯模糊 无需插件
  3. 基于stm32的室内环境监测系统 9746字
  4. java中获取日期 日期和字符串互转
  5. 扫描建模在三维建模中有多厉害?
  6. 人力资源数据分析师前景_数据分析师的前途在哪?
  7. Kubernetes系列教程(三)---纯三层网络方案
  8. Java面试知识学习(持续更新)
  9. Ubuntu下PX4飞控开发环境搭建
  10. 白鹭引擎拉伸高度_白鹭引擎推出LakeShore:无需编程的游戏创作工具