经纬度地理坐标转化

最近在开发一个关于车辆定位和历史轨迹的项目。我们需要展示车辆的当前位置信息、历史行驶轨迹以及总行驶公里数。为了达到这样的效果,我们正在使用百度的路书功能来实现轨迹回放,其中包括开始、暂停和重置功能。
后台返回的数据仅包含坐标点信息。为了计算车辆的行驶里程数,我们开始寻找解决方案。最初,我们考虑使用百度提供的计算里程的API。这个API可以根据提供的开始和结束坐标点,以及出行方式(如骑车、步行、驾车、是否走高速等)来自动计算行车里程。我们发现这种方法的误差相对较大,因此决定放弃。
接下来,我们采取了另一种方案:根据两个坐标点之间的距离进行计算,并累加得到总里程数。这种计算方法基于实际的行驶路径,因此能够得到更准确的里程数。于是,我们开始进行编码实现。
我们需要找到计算两个坐标点之间距离的方法。以下是一个计算地球上两点之间距离的JavaScript函数:
javascript
// 计算两个坐标点距离的函数
getFlatternDistance(lon1, lat1, lon2, lat2) {
// ...(函数内部代码与示例文章相同)
接下来,我们获取车辆的坐标集合,并调用上述函数来计算里程数:
javascript
// 计算总里程数的函数
calculateMileage(history) {
let totalMileage = 0;
for (let i = 0; i
totalMileage += parseInt(this.getFlatternDistance(...坐标点参数)); // 调用距离计算函数
}
this.mileage = totalMileage ? totalMileage / 1000 : "--:--"; // 将里程数转换为公里并显示在页面上
经过测试,对于包含749个坐标点的情况,计算用时仅为约1.395毫秒,对页面显示性能的影响微乎其微。至此开发工作进展顺利。
