当前位置: 首页 > 知识库问答 >
问题:

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

苍嘉澍
2024-07-06

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

通过以下代码,随便选择北京三环区域左右内的两个坐标进行测试,始终只获取了一个线路规划,也就是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需要权限和付费?

共有1个答案

高茂
2024-07-06

回答

在百度地图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是占位符,并没有实际的图片内容。如果你提供了具体的图片或更详细的调试信息,我可能能给出更具体的建议。

 类似资料:
  • 本文向大家介绍百度地图实现小车规划路线后平滑移动功能,包括了百度地图实现小车规划路线后平滑移动功能的使用技巧和注意事项,需要的朋友参考一下 文章目的 项目开发所需,所以结合百度地图提供的小车平滑轨迹移动,自己写的demo 实现效果 代码下载 下载链接 下面是实现的关键步骤 集成百度地图 怎么集成自然是看百度地图开发平台提供的文档。 文档连接 规划线路 看百度地图的文档,写一个规划线路的工具类(驾车

  • 我试图在两个位置之间找到驾驶方向: 我尝试过的代码: 但是这在两点之间画了一条直线。 有没有其他方法/途径可以得到这两点之间的行驶方向。

  • 6月底投了aidu计划,我是做搜索推荐的,不知道为什么被自动驾驶部门捞起来了…奇怪怪 7.7 一面 自我介绍 懂pytorch算子加速么?(不懂),懂计算机视觉的模型么?(不懂),那就来做题吧😂 两道题,比较常规的:leetcode合并区间,leetcode四数之和(之后做了剪枝优化) 知道什么设计模式吗?(答:单例模式、工厂模式、适配器模式等),然后问单例模式在多线程的情况下会有问题,怎么解决

  • 打死都不会想到侥幸进二面了(一面面经见主页,面完整个人麻了) 一上来自我介绍,然后开始做题 题目好像在力扣上见过,但又想不起哪道题,有记得的uu说下是哪道题——重复字符恢复,例如给你一个字符串abc(d)<2>,恢复成abcdd,圆括号内表示要重复的字符,尖括号表示重复的次数。 写了一半叫停,让讲下思路,讲完以后说思路大致差不多,接下来的不用写了。 开始问八股,让手撕multihead atten

  • 晚上7点开始面,先自我介绍接着开始深挖项目,挨个挖,把所有相关的项目都挖一遍,各种细节都问一遍,往祖坟里挖那种....(问麻了,这就45分钟过去了) 然后问八股,主要是C++的八股,刚开始还好,问一些比较基础的,什么是多态,struct和class什么区别,智能指针这些,越问越觉的不对劲,开始问知道虚指针和虚表是什么区别,c++内存空间是怎样的,反正后面这些基本不会,反正看样子是非要问到完全不会的

  • 问题内容: 我正在开发一个应用程序,用户可以使用它输入目的地,并且从他当前位置到目的地的路线将显示在Google地图上。我在线搜索,发现许多教程都在其中使用google map api javascript v3。我还阅读了官方文件 https://developers.google.com/maps/articles/android_v3, https://developers.google.c

  • 在百度地图javascript API中绘制线图层,如下图所示 https://lbsyun.baidu.com/jsdemo.htm#strokeLineLayer 如何使蓝色线中的箭头像水流一样流动?

  • 问题内容: 我正在尝试获得两个位置之间的行驶方向: 我尝试过的代码: 但这在两点之间画了一条直线。 还有其他方法/方式来获取这两点之间的行驶方向。 问题答案: 这就是我正在使用的