利用百度地图 驾车线路规划 实现 运输车辆历史轨迹回放画线路 的功能。
运输车辆的历史轨迹即运输车辆在过去某段时间内走过的路线轨迹。首先得有时间段,即想要画出运输车辆在哪一段时间内的路线轨迹;其次得有在这段历史时间内运输车辆走过的所有轨迹点,这些轨迹点需要从后台获取,当然获取时得从前台把时间段传给后台。
根据业务需求,获取指定车辆的出发时间和停止时间,然后将这两个时间传递给后台,后台根据这两个时间点获取对应时间段的该指定车辆的走过的轨迹点。
后台将指定车辆在某个时间段内的轨迹点返回给前台,前台接收到这些轨迹点,依据百度地图的驾车线路规划,画出基于这些轨迹点的轨迹回放路线。
具体方法是:从后台获取某时间段内的所有历史轨迹点,将第一个点作为轨迹的起始点,将最后一个点作为轨迹的终止点,然后从第一个点到最后一个点的所有途经点中,根据某规律选取10个途经点(因为百度地图JavaScript v2.0 api 规定途经点不能超过10个。但个人测试过,可以取到29个途经点来画出历史轨迹。当途经点为30个是,百度地图就画不出轨迹路线了。)。
确定了起始点、终止点、途经点之后,利用百度地图的DrivingRoute创建一个驾车实例,并在驾车实例中规定驾车策略policy为最短路径策略BMAP_DRIVING_POLICY_LEAST_DISTANCE(因为只有最短路径策略的路径规划是唯一的,而另外两个策略:最短时间BMAP_DRIVING_POLICY_LEAST_TIME、避开高速BMAP_DRIVING_POLICY_AVOID_HIGHWAYS的路径规划不是唯一的。)
例如:var myDriving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: false}, policy: BMAP_DRIVING_POLICY_LEAST_DISTANCE});
创建好驾车实例myDriving 后,利用驾车实例的search方法发起检索,即可在地图中检索出一条最短路径的轨迹路线。在用search方法检索时,将从后台获取到的起始点、终止点、途经点,作为参数传递给search方法即可。
例如:myDriving.search(trackPoints[0], trackPoints[trackPoints.length - 1], {waypoints: wayPoints});//waypoints表示途经点
利用设置途经点的方法虽然可以实现历史轨迹回放的效