AI 地图
产品服务
解决方案
文档与支持
定价
更新时间: 2026/07/17 10:33

本篇将实现从用户位置到选中景点的驾车路线规划,通过 renderOptions 让 JSAPI 自动在地图上渲染路线。

第一步:认识路线规划服务

百度地图 JSAPI 提供了多种路线规划服务:

用途

BMap.DrivingRoute

驾车路线

BMap.WalkingRoute

步行路线

BMap.RidingRoute

骑行路线

BMap.TransitRoute

公交路线

景点检索范围是 10km,驾车最为实用。

第二步:在地点详情弹窗中追加「到这去」按钮

通过 LocalSearch 的 onInfoHtmlSet 回调,在 JSAPI 自动生成的地点详情弹窗中追加导航按钮:

var localSearch = new BMap.LocalSearch(map, {
renderOptions: {
map: map,
panel: document.getElementById('resultPanel'),
autoViewport: true,
viewportOptions: {
margins: [30, 20, 20, 320]
}
},
pageCapacity: 10,
onInfoHtmlSet: function(poi, html) {
if (poi && poi.point) {
var btn = document.createElement('button');
btn.className = 'nav-btn';
btn.textContent = '到这去';
btn.onclick = function() {
driveTo(poi.point.lng, poi.point.lat);
};
var container = html.querySelector('.BMap_PDPannel_detail');
if (container) container.appendChild(btn);
}
}
});

说明:

  • onInfoHtmlSet(poi, html) —— 地点详情弹窗渲染完成时触发,html 是弹窗的 DOM 元素

  • html 中查找 .BMap_PDPannel_detail 容器并追加按钮

第三步:实现 driveTo 函数

点击「到这去」后调用 driveTo 函数,传入目标景点的经纬度:

var drivingRoute = null;
function driveTo(lng, lat) {
var endPoint = new BMap.Point(lng, lat);
var startPoint = currentPosition;
localSearch.clearSelected();
if (drivingRoute) {
drivingRoute.clearResults();
}
drivingRoute = new BMap.DrivingRoute(map, {
renderOptions: {
map: map,
autoViewport: true,
viewportOptions: {
margins: [30, 20, 20, 320]
}
}
});
drivingRoute.search(startPoint, endPoint);
}

代码解释:

  • localSearch.clearSelected() —— 关闭当前打开的地点详情弹窗

  • renderOptions.map —— 指定地图实例,路线会自动渲染在地图上(折线 + 起终点标记)

  • renderOptions.autoViewport —— 自动调整地图视野,确保起终点都在可视范围内

  • viewportOptions.margins —— 左侧留出 320px 避开面板

  • 每次规划前先 clearResults() 清除上一次路线

小结

本篇用 DrivingRoute 配合 renderOptions 实现了驾车路线规划,JSAPI 自动渲染路线和调整视野,代码非常简洁。下一篇是系列最后一步——给地图应用个性化样式。

上一篇

添加地点检索服务

下一篇

设置地图风格
本篇文章对您是否有帮助?