百度地图js API 3.0 如何获取多个驾车行驶路线规划?

我需要获取起点坐标和终点坐标之间的多个线路规划,也就是期望是获取多个坐标数组。作为自定义路线轨迹绘制的依据数据

通过以下代码,随便选择北京三环区域左右内的两个坐标进行测试,始终只获取了一个线路规划,也就是plan.getNumRoutes()获取的数值都是1,

var options = {
  onSearchComplete: seacherEvent,
}

var test = new BMap.DrivingRoute(map, options);

seacherEvent(results) {

  if (test.getStatus() == BMAP_STATUS_SUCCESS) {

    var plan = results.getPlan(0);



    if (plan) {

      // 获取所有的规划线路
      for (var i = 0; i < plan.getNumRoutes(); i++) {
        var route = plan.getRoute(i);
        console.log(route)
      }


    }
  } else {
    // 路线不存在,提示用户
    alert('没有找到符合条件的路线,请修改搜索条件');
  }
},

test.search(startPoint, endPoint);

//测试终点和起点的两点坐标截图

debug截图

我是不是测试坐标选的有问题导致获取的只有一个线路,还是onSearchComplete里的处理没有正确?

百度地图应用本身的驾驶线路功能,获取两地的驾车线路规划也不止有一条,这是为什么,是不是获取多个线路规划实例的api需要权限和付费?

阅读 983
avatarAI BotBETA

回答

在百度地图JavaScript API 3.0中,BMap.DrivingRoute类用于规划驾车线路,但默认情况下,它只会返回一条最优路线。要获取多个线路规划,百度地图的API并未直接提供这样的功能,因为这涉及到复杂的路线算法和计算资源。

通常,如果你需要多个线路规划作为自定义路线轨迹绘制的依据,你可能需要采取以下策略:

  1. 使用不同的起点或终点:你可以尝试稍微移动起点或终点,然后重新规划路线,以获取不同的路线方案。但这并不能保证得到完全不同的路线,特别是当起点和终点非常接近主要道路时。
  2. 自定义算法:你可以自己实现一个算法,基于现有的路线和路网数据,尝试生成不同的路线。这可能需要大量的计算资源和专业的GIS知识。
  3. 第三方服务:考虑使用提供多线路规划功能的第三方服务或API。
  4. 商业服务:如果你正在开发一个商业应用,并且需要这样的功能,你可以考虑与百度地图的商业部门联系,看看他们是否提供这样的高级功能或API。

关于你的代码,plan.getNumRoutes()返回1是因为BMap.DrivingRoute只返回了一条路线。而且,getRoute(i)方法在这个上下文中是多余的,因为你只有一个计划(plan),并且这个计划只有一条路线。

至于百度地图应用本身的驾驶线路功能为什么能够显示多条路线,这很可能是因为它在服务器端实现了更复杂的算法,并且可能使用了更多的计算资源。这样的功能通常不会直接暴露给公共API,因为它需要更多的计算和处理能力。

注意:在上面的回答中,我假设了/img/bVdc7yX/img/bVdc7zN是占位符,并没有实际的图片内容。如果你提供了具体的图片或更详细的调试信息,我可能能给出更具体的建议。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏