1. 百度地圖的路徑規划分為四類:駕駛、交通工具、騎行、步行。每個調用不同的函數,雖說是不同的函數,但是使用方法
基本相同。
DrivingRoute、TransitRoute、WalkingRoute、RidingRoute。
2. 駕駛模式
1 routing = new BMap.DrivingRoute(map,{ 2 renderOptions :{ 3 map:map, 4 autoViewport: true 5 } 6 });
3. 交通工具模式
交通工具還牽涉到跨省時,以飛機優先還是動車優先,具體可以參考具體類。https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_reference_3_0.html#a7b9
1 routing = new BMap.TransitRoute(map,{ 2 renderOptions :{ 3 map:map, 4 autoViewport: true 5 }, 6 intercityPolicy:BMAP_INTERCITY_POLICY_EARLY_START, 7 8 transitTypePolicy:BMAP_TRANSIT_TYPE_POLICY_AIRPLANE 9 10 });
TransitPolicy
此常量表示市內公交方案換乘策略。
常量 | 描述 |
BMAP_TRANSIT_POLICY_RECOMMEND | 推薦方案 |
BMAP_TRANSIT_POLICY_LEAST_TIME | 最少時間 |
BMAP_TRANSIT_POLICY_LEAST_TRANSFER | 最少換乘 |
BMAP_TRANSIT_POLICY_LEAST_WALKING | 最少步行 |
BMAP_TRANSIT_POLICY_AVOID_SUBWAYS | 不乘地鐵 |
BMAP_TRANSIT_POLICY_FIRST_SUBWAYS | 優先地鐵 |
IntercityPolicy
此常量表示跨城公交換乘策略。
常量 | 描述 |
BMAP_INTERCITY_POLICY_LEAST_TIME | 時間短 |
BMAP_INTERCITY_POLICY_EARLY_START | 出發早 |
BMAP_INTERCITY_POLICY_CHEAP_PRICE | 價格低 |
TransitTypePolicy
此常量表示跨城交通方式策略。
常量 | 描述 |
BMAP_TRANSIT_TYPE_POLICY_TRAIN | 火車優先 |
BMAP_TRANSIT_TYPE_POLICY_AIRPLANE | 飛機優先 |
BMAP_TRANSIT_TYPE_POLICY_COACH | 大巴優先 |
4. 騎行模式
1 routing = new BMap.RidingRoute(map,{ 2 renderOptions :{ 3 map:map, 4 autoViewport: true 5 } 6 });
5. 步行模式
1 routing = new BMap.WalkingRoute(map,{ 2 renderOptions :{ 3 map:map, 4 autoViewport: true 5 } 6 });
6. 路徑規划
1 routing.search(startPt,endPt);
調用search函數后,地圖默認會將規划路徑顯示出來。
7. 自定義起點和終點圖標,修改路線顏色。
startPt 和 endPt 是在地圖上點擊獲取的 Point 對象。startMarker 和 endMarker 為自定義圖標的兩個點,單獨添加到地圖上。
setPolylinesSetCallback 中執行的代碼,先獲取到已產生的路線並刪除,然后根據路線的點集合,重新畫線 Polyline ,並給顏色賦值。
1 var startIcon = new BMap.Icon('/bdMap/img/start.png', new BMap.Size(60,60)); 2 3 var endIcon = new BMap.Icon('/bdMap/img/end.png', new BMap.Size(48,48)); 4 5 var startMarker = new BMap.Marker(startPt,{icon:startIcon}); 6 7 8 var endMarker = new BMap.Marker(endPt,{icon:endIcon}); 9 10 11 routing.search(startPt,endPt); 12 13 let routeResult = routing.getResults(); 14 15 console.log(routeResult); 16 17 routing.setPolylinesSetCallback(function (result) { 18 routing.clearResults(); 19 map.clearOverlays(); 20 21 map.addOverlay(startMarker); 22 map.addOverlay(endMarker); 23 24 var points = []; 25 result[0].Ar.map(function (item) { 26 points.push(new BMap.Point(item.lng,item.lat)); 27 }); 28 var polyline = new BMap.Polyline(points,{strokeColor:"#ff5943",strokeWeight:5,strokeOpacity:0.5}); 29 map.addOverlay(polyline); 30 });
8. 頁面顯示
9. 代碼參考