经纬度地理坐标转化


经纬度地理坐标转化

最近在开发一个关于车辆定位和历史轨迹的项目。我们需要展示车辆的当前位置信息、历史行驶轨迹以及总行驶公里数。为了达到这样的效果,我们正在使用百度的路书功能来实现轨迹回放,其中包括开始、暂停和重置功能。

后台返回的数据仅包含坐标点信息。为了计算车辆的行驶里程数,我们开始寻找解决方案。最初,我们考虑使用百度提供的计算里程的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毫秒,对页面显示性能的影响微乎其微。至此开发工作进展顺利。


经纬度地理坐标转化