高德地圖JS--批量規劃步行路線 優化
調取高德地圖JS API 進行步行路線規劃

多個起點到達一個重點,根據搜素結果畫路線,進行繪圖,并為線路添加點擊事件
效果如下:
代碼如下:
html,
body,
#container {
width: 100%;
height: 100%;
}
var map = new AMap.Map('container', {
center: [116.397559, 39.89621],
zoom: 14
})
// 當前示例的目標是展示如何根據規劃結果繪制路線,因此walkOption為空對象
var walkingOption = {}
let dataArr = [
[15, '汽車服務', 116.807599, 39.6462117, 1.459, 6.3265],
[22, '汽車服務', 117.6136484, 39.7657742, 9.738, 7.5687],
[30, '汽車服務', 117.2940413, 39.7878749, 7.7227, 6.5476],
[37, '汽車服務', 116.0684453, 38.174566, 4.5352, 8.5357],
[42, '汽車服務', 117.3493731, 38.6404797, 1.1438, 4.3265],
[43, '汽車服務', 116.8465287, 38.363796, 8.7718, 4.4577]]
let targetPoint = [116.944964, 39.457521]
// 搜素路線的函數
function searchRouter (startPointArr, endPoint) {
for (let i = 0; i < startPointArr.length; i++) {
let item = startPointArr[i]
let startPoint = [item[2], item[3]]
// 步行導航
var walking = new AMap.Walking(walkingOption)
//根據起終點坐標規劃步行路線
walking.search(startPoint, endPoint, function (status, result) {
// result即是對應的步行路線數據信息,相關數據結構文檔請參考 https://lbs.amap.com/api/javaScript-api/reference/route-search#m_WalkingResult
if (status === 'complete') {
if (result.routes && result.routes.length) {
drawRoute(result.routes[0], item)
log.success('繪制步行路線完成')
}
} else {
log.error('步行路線數據查詢失敗' + result)
}
})
}
}
// 描繪路線的函數
function drawRoute (route, item) {
var path = parseRouteToPath(route)
var startMarker = new AMap.Marker({
position: path[0],
icon: 'https://webapi.amap.com/theme/v1.3/markers/n/start.png',
map: map
})
var endMarker = new AMap.Marker({
position: path[path.length - 1],
icon: 'https://webapi.amap.com/theme/v1.3/markers/n/end.png',
map: map
})
var routeLine = new AMap.Polyline({
path: path,
isOutline: true,
outlineColor: '#ffeeee',
borderWeight: 2,
strokeWeight: 5,
cursor: 'pointer',
strokeColor: '#0091ff',
lineJoin: 'round',
extData: item
})
routeLine.on('click', function (obj) {
console.log(obj.target.getExtData())
alert('您點擊了線為' + obj.target.getExtData().toString())
})
routeLine.setMap(map)
// 調整視野達到最佳顯示區域
map.setFitView([startMarker, endMarker, routeLine])
}
// 解析WalkRoute對象,構造成AMap.Polyline的path參數需要的格式
// WalkRoute對象的結構文檔 https://lbs.amap.com/api/javaScript-api/reference/route-search#m_WalkRoute
function parseRouteToPath (route) {
var path = []
for (var i = 0, l = route.steps.length; i < l; i++) {
var step = route.steps[i]
path.push([step.start_location.lng, step.start_location.lat])
path.push([step.end_location.lng, step.end_location.lat])
}
return path
}
searchRouter(dataArr, targetPoint)
有任何高德JS API 調用問題都可以在下方評論咨詢我。博主做過很多O2O示例
謝謝閱讀.如果覺得對你有幫助請記得或.歡迎留言討論.你的支持是我出產優秀博客的動力.
交通智能體
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。