生活随笔
收集整理的這篇文章主要介紹了
百度地图路线规划(途经点)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
效果圖
這里為了方便 我直接使用的是坐標 在實際項目中可以將地址轉成坐標
<template
><div style
="width: 100%;height: 700px;"><!--始和結束地址--
><div id
="r-result"><div
>請輸入出行方式:
<el-radio-group v-model
="travelMode"><el-radio :label
="1">駕車
</el-radio
><el-radio :label
="2">公交
</el-radio
><el-radio :label
="3">騎行
</el-radio
><el-radio :label
="4">步行
</el-radio
></el-radio-group
></div
>請輸入開始坐標:
<el-input id
="startKeyword" v-model
="startKeyword" clearable maxlength
="20" show-word-limit style
="width: 400px"/
><br
><div v-if
="travelMode == 1">請輸入途經坐標:
<divv-for
="(domain, index) in domains":label
="'途經點' + index":key
="domain.key">途經點坐標:
<el-input v-model
="domain.value" style
="width: 400px;"></el-input
><el-button @click.prevent
="removeDomain(domain)">刪除
</el-button
></div
><el-button @click
="addDomain">新增途經點
</el-button
></div
>請輸入結束坐標:
<el-input id
="endKeyword" v-model
="endKeyword" clearable maxlength
="20" show-word-limit style
="width: 400px"/
><br
><el-button type
="success" @click
="search">檢索
</el-button
></div
><div id
="searchResultPanel" style
="border:1px solid #C0C0C0;width:150px;height:auto; display:none;"></div
><div
></div
><div id
="allmap" style
="width:100%; height:450px;"></div
><!--返回結果--
><div id
="result" style
="width: 100%;height: 300px;overflow:auto;">根據起點和終點經緯度駕車導航路線
</div
></div
>
</template
><script
>import $ from
"jquery";export default
{name:
"index2",data
() {return {startKeyword:
'', //開始地址midKeyword:
'',//途經點endKeyword:
'',//結束地址travelMode: null,//出行方式localSearch: null,//自動搜索map: null, //地圖domains:
[],//途經點
}},mounted
() {this.init
();},created
() {},methods:
{removeDomain
(item
) {var index
= this.domains.indexOf
(item
)if (index
!== -1
) {this.domains.splice
(index, 1
)}},addDomain
() {this.domains.push
({value:
'',
});},search
() {this.map.clearOverlays
(); //清除地圖上所有覆蓋物
if (this.travelMode
!= null
) {if (this.travelMode
== 1
) {this.checkDriving
();} else if (this.travelMode
== 2
) {this.checkTransit
();} else if (this.travelMode
== 3
) {this.checkRiding
();} else {this.checkWalking
();}} else {this.
$message.error
("請選擇出行方式")}},//駕車checkDriving
() {var that
= thisvar startPoint
= new BMap.Point
(this.startKeyword.split
(",")[0
], this.startKeyword.split
(",")[1
]);var endPoint
= new BMap.Point
(this.endKeyword.split
(",")[0
], this.endKeyword.split
(",")[1
]);var arrPoint
= [];//途經點
for (let i
= 0
; i
< this.domains.length
; i++
) {var value
= this.domains
[i
].valuearrPoint
[i
] = new BMap.Point
(value.split
(",")[0
], value.split
(",")[1
]);}/* //創建駕車實例var driving
= new BMap.DrivingRoute
(that.map,
{onSearchComplete:
function (results
) {console.log
(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 options
= {onSearchComplete:
function (results
) {console.log
("=============")console.log
(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
(that.map
);console.log
(driving.getResults
)// var start
= new BMap.Point
(116.310791, 40.003419
);// var end
= new BMap.Point
(116.486419, 39.877282
);// driving.search
(start, end
);//判斷是否添加途經點
if (arrPoint.length
== 0
) {driving.search
(startPoint, endPoint
);driving.setSearchCompleteCallback
(function
() {var pts
= driving.getResults
().getPlan
(0
).getRoute
(0
).getPath
(); //通過駕車實例,獲得一系列點的數組var polyline
= new BMap.Polyline
(pts
);that.map.addOverlay
(polyline
);var marker1
= new BMap.Marker
(startPoint
); //創建3個markervar marker2
= new BMap.Marker
(endPoint
);that.map.addOverlay
(marker1
);that.map.addOverlay
(marker2
);var lab1
= new BMap.Label
("起點",
{position: startPoint
}); //創建3個labelvar lab2
= new BMap.Label
("終點",
{position: endPoint
});that.map.addOverlay
(lab1
);that.map.addOverlay
(lab2
);setTimeout
(function
() {that.map.setViewport
([startPoint, endPoint
]); //調整到最佳視野
}, 1000
)})} else {//添加了途經點driving.search
(startPoint, arrPoint
[0
]);for (let i
= 0
; i
< arrPoint.length - 1
; i++
) {driving.search
(arrPoint
[i
], arrPoint
[i + 1
]);}driving.search
(arrPoint
[arrPoint.length - 1
], endPoint
);driving.setSearchCompleteCallback
(function
() {var pts
= driving.getResults
().getPlan
(0
).getRoute
(0
).getPath
(); //通過駕車實例,獲得一系列點的數組var polyline
= new BMap.Polyline
(pts
);that.map.addOverlay
(polyline
);//創建markervar marker1
= new BMap.Marker
(startPoint
);var marker2
= new BMap.Marker
(endPoint
);//添加標注點that.map.addOverlay
(marker1
);that.map.addOverlay
(marker2
);for (let i
= 0
; i
< arrPoint.length
; i++
) {var marker
= new BMap.Marker
(arrPoint
[i
]);that.map.addOverlay
(marker
);}var lab1
= new BMap.Label
("起點",
{position: startPoint
}); //創建3個labelvar lab2
= new BMap.Label
("終點",
{position: endPoint
});//var lab3
= new BMap.Label
("途經點",
{position:myP3
});//添加labelthat.map.addOverlay
(lab1
);that.map.addOverlay
(lab2
);//新數組 用于調整最佳視野var newArr
= [];newArr.push
(startPoint
);for (let i
= 0
; i
< arrPoint.length
; i++
) {newArr.push
(arrPoint
[i
])var lab
= new BMap.Label
("途經點",
{position: arrPoint
[i
]});that.map.addOverlay
(lab
);}newArr.push
(endPoint
)setTimeout
(function
() {that.map.setViewport
(newArr
); //調整到最佳視野
}, 1000
)});}},//公交checkTransit
() {var that
= thisvar transit
= new BMap.TransitRoute
(that.map,
{renderOptions:
{map: that.map,autoViewport: true,panel:
"result"},// 配置跨城公交的換成策略為優先出發早intercityPolicy: BMAP_TRANSIT_POLICY_RECOMMEND,//返回方案個數//pageCapacity: 3,// 配置跨城公交的交通方式策略為飛機優先// transitTypePolicy: BMAP_TRANSIT_TYPE_POLICY_AIRPLANE
});var start
= new BMap.Point
(this.startKeyword.split
(",")[0
], this.startKeyword.split
(",")[1
]);var end
= new BMap.Point
(this.endKeyword.split
(",")[0
], this.endKeyword.split
(",")[1
]);transit.search
(start, end
);},//騎行checkRiding
() {var that
= this
;var riding
= new BMap.RidingRoute
(that.map,
{renderOptions:
{map: that.map,autoViewport: true,panel:
"result"}});var start
= new BMap.Point
(this.startKeyword.split
(",")[0
], this.startKeyword.split
(",")[1
]);var end
= new BMap.Point
(this.endKeyword.split
(",")[0
], this.endKeyword.split
(",")[1
]);riding.search
(start, end
);},//步行checkWalking
() {var that
= this
;var walking
= new BMap.WalkingRoute
(that.map,
{renderOptions:
{map: that.map,autoViewport: true,panel:
"result"}});var start
= new BMap.Point
(this.startKeyword.split
(",")[0
], this.startKeyword.split
(",")[1
]);var end
= new BMap.Point
(this.endKeyword.split
(",")[0
], this.endKeyword.split
(",")[1
]);walking.search
(start, end
);},//初始化init
() {var that
= this
;//初始化var map
= new BMap.Map
("allmap");map.centerAndZoom
(new BMap.Point
(116.404, 39.915
), 14
);map.setMapStyleV2
({styleId:
'bf6890d1f6963aa54a40f7c18e9227a1'});map.enableScrollWheelZoom
(true
); // 開啟鼠標滾輪縮放map.addControl
(new BMap.NavigationControl
()); // 添加平移縮放控件map.addControl
(new BMap.ScaleControl
()); // 添加比例尺控件map.addControl
(new BMap.OverviewMapControl
()); //添加縮略地圖控件that.map
= map
;},
}}
</script
>
這個和上篇博客 只是多了一個途經點 其余功能都是相同的
注意: 只有駕車才會有途經點 其余出行方式沒有
總結
以上是生活随笔為你收集整理的百度地图路线规划(途经点)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。