百度地图JavaScript API v3.0提供了驾车、公交、步行和骑行四种出行方式的路线规划功能。开发者在使用线路规划的接口时,可以使用我们提供的默认展示效果。也可以通过监听事件回调,使用检索数据完成自己的需求。v3.0的线路规划服务和v2.0的相比,在功能上有所差异。详细请参考本文档和JavaScript API v3.0类参考。
代码如下:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 14);var driving = new BMap.DrivingRoute(map, {renderOptions: {map: map,autoViewport: true}});var start = new BMap.Point(116.310791,40.003419);var end = new BMap.Point(116.486419,39.877282);driving.search(start, end);
驾车导航服务也提供了丰富的数据接口,通过onSearchComplete回调函数可以得到BMap.DrivingRouteResult对象,它包含了驾车导航结果数据信息。 结果会包含若干驾车方案,每条方案中包含了若干驾车线路。 每条驾车线路又会包含一系列的关键步骤(BMap.Step),关键步骤描述了具体驾车行驶方案。
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 14);var options ={onSearchComplete: function(results) {if (driving.getStatus() == BMAP_STATUS_SUCCESS) {// 获取第一条方案var plan = results.getPlan(0);// 获取方案的驾车线路var route = plan.getRoute(0);// 获取每个关键步骤,并输出到页面var s = [];for (var i = 0; i < route.getNumSteps(); i++) {var step = route.getStep(i);console.log(step);}}}};var driving = new BMap.DrivingRoute(map, options);var start = new BMap.Point(116.310791, 40.003419);var end = new BMap.Point(116.486419, 39.877282);driving.search(start, end);
BMap.TransitRoute类提供公交线路规划服务。
注意:v3.0中,新增了TransitRoutePlan.getTotal 和 TransitRoutePlan.getTotalType方法,可以获取一条公交换乘方案中总路段数(步行+公交),和指定路段的交通方式类型(步行或公交)。
代码如下:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 14);var transit = new BMap.TransitRoute(map, {renderOptions: {map: map,autoViewport: true}});var start = new BMap.Point(116.310791, 40.003419);var end = new BMap.Point(116.486419, 39.877282);transit.search(start, end);
代码如下:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 14);var transit = new BMap.TransitRoute(map, {renderOptions: {map: map,autoViewport: true},// 配置跨城公交的换乘策略为优先出发早intercityPolicy: BMAP_INTERCITY_POLICY_EARLY_START,// 配置跨城公交的交通方式策略为飞机优先transitTypePolicy: BMAP_TRANSIT_TYPE_POLICY_AIRPLANE});var start = new BMap.Point(116.310791, 40.003419);var end = new BMap.Point(121.490546, 31.233585);transit.search(start, end);
您可以提供用于展示文字结果的容器元素,方案结果会自动在页面中展现。
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 14);var transit = new BMap.TransitRoute(map, {renderOptions: { map: map, panel: "results" }});var start = new BMap.Point(116.310791, 40.003419);var end = new BMap.Point(121.490546, 31.233585);transit.search(start, end);
您可通过数据接口获取详细的公交方案信息。公交导航搜索结果用BMap.TransitRouteResult来表示,其中包含了若干公交出行方案(BMap.TransitRoutePlan)。每条出行方案由步行线路和公交线路组成。 在起点到上车点之间、下车点到终点之间以及每个换乘站之间都会存在步行线路,如果上述的某两点位置重合,那么其间的步行路线长度为0。 如下示例,通过数据接口将第一条方案的路线添加到地图上。
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 12);var transit = new BMap.TransitRoute();transit.setSearchCompleteCallback(function(results) {if (transit.getStatus() == BMAP_STATUS_SUCCESS) {var firstPlan = results.getPlan(0);// 绘制步行线路for (var i = 0; i < firstPlan.getNumRoutes(); i++) {var walk = firstPlan.getRoute(i);if (walk.getDistance(false) > 0) {// 步行线路有可能为0map.addOverlay(new BMap.Polyline(walk.getPoints(), { lineColor:"green" }));}}// 绘制公交线路for (i = 0; i < firstPlan.getNumLines(); i++) {var line = firstPlan.getLine(i);map.addOverlay(new BMap.Polyline(line.getPoints()));}}});var start = new BMap.Point(116.310791, 40.003419);var end = new BMap.Point(121.490546, 31.233585);transit.search(start, end);
BMap.WalkingRoute提供步行线路规划服务。基本用法和驾车线路规划类似。
代码如下:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 14);var walk = new BMap.WalkingRoute(map, {renderOptions: { map: map }});var start = new BMap.Point(116.310791, 40.003419);var end = new BMap.Point(116.486419, 39.877282);walk.search(start, end);
BMap.RidingRoute提供骑行线路规划服务,基本用法和步行线路规划基本相同。
代码如下:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 14);var riding = new BMap.RidingRoute(map, {renderOptions: { map: map }});var start = new BMap.Point(116.310791, 40.003419);var end = new BMap.Point(116.486419, 39.877282);riding.search(start, end);
上一篇
下一篇
本篇文章对您是否有帮助?