日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue.js BMap 与BMapLib.lushu 的配置与百度路书,结合项目后台的实例展示

發(fā)布時間:2024/3/26 vue 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue.js BMap 与BMapLib.lushu 的配置与百度路书,结合项目后台的实例展示 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

@[vue.js BMap 與BMapLib.lushu 的配置與百度路書,結(jié)合項(xiàng)目的實(shí)例展示]

上一章實(shí)現(xiàn)了百度軌跡的展現(xiàn)。今天寫一個百度路書結(jié)合項(xiàng)目功能的實(shí)現(xiàn)。
(實(shí)例很全面,認(rèn)真相互探討學(xué)習(xí))

步驟:

第一步:申請 ak, 很簡單。
http://lbsyun.baidu.com/index.php?title=jspopularGL/guide/getkey

第二步:配置。
public文件夾下面的index.html頁面引入百度地圖與百度路書的js

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的ak&callback=init"></script><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的ak"></script><script type="text/javascript" src="https://api.map.baidu.com/library/LuShu/1.2/src/LuShu_min.js?s=1"></script>

第三步:引入頁面。

// 頁面中需要引入 BMap 與 BMapLib

<template><!--地圖--><div style='width: 100%;height: 700px;'><el-select label="運(yùn)輸管理編號" v-model="inputForm.transportmanage.id" style="width: 300px;" placeholder="請選擇運(yùn)輸批次" @change="init2"><el-option v-for="(item,index) in transportmanageList" :key="index" :label="item.transportlot + '-' +item.productnum.productname" :value="item.id" /></el-select><el-input id='startKeyword' v-model='startKeyword' clearable maxlength='20' show-word-limit style='width: 400px;'/><el-input id='endKeyword' v-model='endKeyword' clearable maxlength='20' show-word-limit style='width: 400px;'/><!--存放地圖div --><div id="map_canvas"></div><div id="result"></div><!--按鈕 --><el-button id="run" @click="run">開始</el-button><el-button id="stop" @click="stop">停止</el-button><el-button id="pause" @click="pause">暫停</el-button><!-- <el-button id="hide" @click="hide">隱藏信息窗口</el-button><el-button id="show" @click="show">展示信息窗口</el-button> --></div> </template><script>import BMap from 'BMap'import BMapLib from 'BMapLib'export default {name: 'index',data () {return {path : [{ //數(shù)組點(diǎn)'lng': 112.541993,'lat': 37.822504}, {'lng': 112.628662,'lat': 38.02281}, {'lng': 112.70708,'lat': 38.023748}, {'lng': 113.009629,'lat': 38.060038}, {'lng': 113.352889,'lat': 38.09286}, {'lng': 113.71081,'lat': 38.060209}, {'lng': 113.897227,'lat': 38.072481}, {'lng': 114.028882,'lat': 38.121267}, {'lng': 114.24771,'lat': 38.194384}, {'lng': 114.472825,'lat': 38.092136}, {'lng': 114.581917,'lat': 38.061173}],startPoint: { // 默認(rèn)起點(diǎn)lng: '112.541993',lat: '37.822504'},endPoint: { // 默認(rèn)終點(diǎn)lng: '114.581917',lat: '38.061173'},speed:1000, // 速度inputForm: {transportmanage:{id: '6f1e5712e4134ec7838738d0824f71bf', //默認(rèn)選擇項(xiàng)transportlot: '',startingpoint: '太原市萬柏林區(qū)太原煤炭交易中心交易大樓', // 出發(fā)地destination: '石家莊市長安區(qū)河鋼集團(tuán)石家莊鋼鐵有限責(zé)任公司' // 目的地}},startKeyword: '太原市萬柏林區(qū)太原煤炭交易中心交易大樓',endKeyword: '石家莊市長安區(qū)河鋼集團(tuán)石家莊鋼鐵有限責(zé)任公司',loading: false,local: '',defaultContent: '001-鋼筋',local2: '',transportmanageList: [], // 運(yùn)輸管理Lushu: '',map: '', // 路書marker: '', // 障礙物drv: '', // 實(shí)例化一個駕車導(dǎo)航用來生成路線pls: ''}},mounted () {this.init2() // 路書初始化// this.init3() // 路書初始化 (可添加軌跡點(diǎn)的路書實(shí)現(xiàn))setTimeout(() => { // 時間等待this.run() // 啟動}, 2000)},created () {this.getTransportmanageList()},methods: {// 獲取運(yùn)輸管理數(shù)據(jù)列表getTransportmanageList () {this.loading = truethis.$http.get(`/transportmanage/bmTransportmanagement/queryTransportmanageList`).then(response => {this.transportmanageList = response.data.transportmanageList})this.loading = false},init2 (value) { // 路書var that = this//給div附上地圖that.map = new BMap.Map('map_canvas')//給地圖加上控件that.map.enableScrollWheelZoom()that.map.centerAndZoom(new BMap.Point(116.404, 39.915), 13); // 初始化地圖,設(shè)置中心點(diǎn)坐標(biāo)和地圖級別function myFun(){var pp = that.local.getResults().getPoi(0).point; //獲取第一個智能搜索的結(jié)果//this.startPoint = ppthat.startPoint.lng = pp.lngthat.startPoint.lat = pp.latthat.map.centerAndZoom(pp, 18);}function myFun2(){var pp = that.local2.getResults().getPoi(0).point; //獲取第一個智能搜索的結(jié)果//this.endPoint = ppthat.endPoint.lng = pp.lngthat.endPoint.lat = pp.latthat.map.centerAndZoom(pp, 18);that.map.addOverlay(new BMap.Marker(pp)); //添加標(biāo)注}if(value){this.map.clearOverlays() // 清除所有覆蓋物this.marker.hide()this.$http.get(`/transportmanage/bmTransportmanagement/queryById?id=${value}`).then(({data}) => {that.startKeyword = data.bmTransportmanagement.startingpoint // 開始地點(diǎn)that.endKeyword = data.bmTransportmanagement.destination // 結(jié)束地點(diǎn)that.defaultContent = data.bmTransportmanagement.transportlot + '-' + data.bmTransportmanagement.productnum.productnamethat.local = new BMap.LocalSearch(that.map, { // 智能搜索onSearchComplete: myFun})that.local.search(data.bmTransportmanagement.startingpoint)that.local2 = new BMap.LocalSearch(that.map, { //智能搜索onSearchComplete: myFun2})that.local2.search(data.bmTransportmanagement.destination)})}let searchComplete = function(res) {if (that.drv.getStatus() == BMAP_STATUS_SUCCESS) {var plan = res.getPlan(0)var arrPois = []for(var j = 0; j < plan.getNumRoutes(); j++){var route = plan.getRoute(j)arrPois= arrPois.concat(route.getPath())}that.marker = new BMap.Marker(arrPois[0],{//引入小車圖標(biāo)icon : new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52,26),{anchor : new BMap.Size(27, 13)})})//展示時小車樣式let label = new BMap.Label("運(yùn)輸車",{offset:new BMap.Size(0,-30)})label.setStyle({border:"2px red rgb(204, 204, 204)",color: "rgb(2, 0, 0)",borderRadius:"10px",padding:"5px",background:"rgb(222, 255, 255)",});that.marker.setLabel(label);that.map.addOverlay(that.marker);that.map.addOverlay(new BMap.Polyline(arrPois, {strokeColor: '#111'}))that.map.setViewport(arrPois) // 調(diào)整到最佳視野BMapLib.LuShu.prototype._move = function(initPos,targetPos,effect) {let pointsArr = [initPos,targetPos]; //點(diǎn)數(shù)組let me = this,//當(dāng)前的幀數(shù)currentCount = 0,//步長,米/秒timer = 10,step = this._opts.speed / (1000 / timer),//初始坐標(biāo)init_pos = this._projection.lngLatToPoint(initPos),//獲取結(jié)束點(diǎn)的(x,y)坐標(biāo)target_pos = this._projection.lngLatToPoint(targetPos),//總的步長count = Math.round(me._getDistance(init_pos, target_pos) / step);//顯示折線 syj201607191107// 畫線操作 (畫軌跡)this._map.addOverlay(new BMap.Polyline(pointsArr, {strokeColor : "red", // 設(shè)置顏色strokeWeight : 5, // 寬度strokeOpacity : 0.5 // 透明度}))//如果小于1直接移動到下一點(diǎn)if (count < 1) {me._moveNext(++me.i)return}me._intervalFlag = setInterval(function() {//兩點(diǎn)之間當(dāng)前幀數(shù)大于總幀數(shù)的時候,則說明已經(jīng)完成移動if (currentCount >= count) {clearInterval(me._intervalFlag)//移動的點(diǎn)已經(jīng)超過總的長度if(me.i > me._path.length){return}//運(yùn)行下一個點(diǎn)me._moveNext(++me.i)}else {currentCount++let x = effect(init_pos.x, target_pos.x, currentCount, count),y = effect(init_pos.y, target_pos.y, currentCount, count),pos = me._projection.pointToLngLat(new BMap.Pixel(x, y))//設(shè)置markerif(currentCount == 1){let proPos = nullif(me.i - 1 >= 0){proPos = me._path[me.i - 1]}if(me._opts.enableRotation == true){me.setRotation(proPos,initPos,targetPos)}if(me._opts.autoView){if(!me._map.getBounds().containsPoint(pos)){me._map.setCenter(pos)}}}//正在移動me._marker.setPosition(pos)//設(shè)置自定義overlay的位置me._setInfoWin(pos)}},timer)}// 創(chuàng)建路書實(shí)例that.Lushu = new BMapLib.LuShu(that.map,arrPois,{defaultContent: that.defaultContent, // 路書展示內(nèi)容autoView:true, // 是否開啟自動視野調(diào)整,如果開啟那么路書在運(yùn)動過程中會根據(jù)視野自動調(diào)整// 圖標(biāo)設(shè)置icon : new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52,26),{anchor : new BMap.Size(27, 13)}),speed: that.speed, // 速度enableRotation: true, // 是否設(shè)置marker隨著道路的走向進(jìn)行旋轉(zhuǎn)landmarkPois:[// 停頓點(diǎn) html 展示內(nèi)容 pauseTime 停留時間 3s{lng:112.628662,lat:38.02281,html:'加油站',pauseTime:3}]})that.marker.addEventListener("click",function(){// that.marker.enableMassClear() // 設(shè)置后可以隱藏改點(diǎn)的覆蓋物that.marker.hide()that.Lushu.start()//this.map.clearOverlays() // 清除所有覆蓋物})}}setTimeout(() => { // 時間等待// 實(shí)例化一個駕車導(dǎo)航用來生成路線that.drv = new BMap.DrivingRoute(that.map, {onSearchComplete: searchComplete})var start = new BMap.Point(this.startPoint.lng, this.startPoint.lat);var end = new BMap.Point(this.endPoint.lng, this.endPoint.lat);that.drv.search(start, end)}, 1000)// // 判斷是否有軌跡點(diǎn)// if (that.path.length == 0) {// that.drv.search(start, end)// }else { // 添加了途經(jīng)點(diǎn)// that.drv.search(start, new BMap.Point(that.path[0].lng , that.path[0].lat) )// for (let i = 0; i < that.path.length - 1; i++) {// that.drv.search( new BMap.Point(that.path[i].lng , that.path[i].lat), new BMap.Point( that.path[i + 1].lng , that.path[i + 1].lat ))// }// that.drv.search(new BMap.Point(that.path[that.path.length - 1].lng , that.path[that.path.length - 1].lat), end)// }},init3 () { // 路書(可添加軌跡點(diǎn)) var that = this//給div附上地圖that.map = new BMap.Map('map_canvas')//給地圖加上控件that.map.enableScrollWheelZoom()that.map.centerAndZoom(new BMap.Point(116.404, 39.915), 13); // 初始化地圖,設(shè)置中心點(diǎn)坐標(biāo)和地圖級別//坐標(biāo)點(diǎn)集合let arrPois = []for (var i = 0; i < this.path.length; i++) {let poi = new BMap.Point(this.path[i].lng, this.path[i].lat)arrPois.push(poi)}this.map.setViewport(arrPois) // 調(diào)整到最佳視野this.marker=new BMap.Marker(arrPois[0],{//引入小車圖標(biāo)icon : new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52,26),{anchor : new BMap.Size(27, 13)})})//展示時小車樣式let label = new BMap.Label("運(yùn)輸車",{offset:new BMap.Size(0,-30)})label.setStyle({border:"2px red rgb(204, 204, 204)",color: "rgb(2, 0, 0)",borderRadius:"10px",padding:"5px",background:"rgb(222, 255, 255)",})this.marker.setLabel(label)this.map.addOverlay(this.marker)BMapLib.LuShu.prototype._move = function(initPos,targetPos,effect) {let pointsArr=[initPos,targetPos] //點(diǎn)數(shù)組let me = this,//當(dāng)前的幀數(shù)currentCount = 0,//步長,米/秒timer = 10,step = this._opts.speed / (1000 / timer),//初始坐標(biāo)init_pos = this._projection.lngLatToPoint(initPos),//獲取結(jié)束點(diǎn)的(x,y)坐標(biāo)target_pos = this._projection.lngLatToPoint(targetPos),//總的步長count = Math.round(me._getDistance(init_pos, target_pos) / step);//顯示折線 syj201607191107// 畫線操作 (畫軌跡)this._map.addOverlay(new BMap.Polyline(pointsArr, {strokeColor : "red", // 設(shè)置顏色strokeWeight : 5, // 寬度strokeOpacity : 0.5 // 透明度}))//如果小于1直接移動到下一點(diǎn)if (count < 1) {me._moveNext(++me.i)return}me._intervalFlag = setInterval(function() {//兩點(diǎn)之間當(dāng)前幀數(shù)大于總幀數(shù)的時候,則說明已經(jīng)完成移動if (currentCount >= count) {clearInterval(me._intervalFlag)//移動的點(diǎn)已經(jīng)超過總的長度if(me.i > me._path.length){return}//運(yùn)行下一個點(diǎn)me._moveNext(++me.i)}else {currentCount++let x = effect(init_pos.x, target_pos.x, currentCount, count),y = effect(init_pos.y, target_pos.y, currentCount, count),pos = me._projection.pointToLngLat(new BMap.Pixel(x, y))//設(shè)置markerif(currentCount == 1){let proPos = nullif(me.i - 1 >= 0){proPos = me._path[me.i - 1]}if(me._opts.enableRotation == true){me.setRotation(proPos,initPos,targetPos)}if(me._opts.autoView){if(!me._map.getBounds().containsPoint(pos)){me._map.setCenter(pos)}}}//正在移動me._marker.setPosition(pos)//設(shè)置自定義overlay的位置me._setInfoWin(pos)}},timer)}// 創(chuàng)建路書實(shí)例this.Lushu = new BMapLib.LuShu(this.map,arrPois,{defaultContent: "運(yùn)輸車一", // 路書展示內(nèi)容autoView:true, // 是否開啟自動視野調(diào)整,如果開啟那么路書在運(yùn)動過程中會根據(jù)視野自動調(diào)整// 圖標(biāo)設(shè)置icon : new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52,26),{anchor : new BMap.Size(27, 13)}),speed: this.speed, // 速度enableRotation: true, // 是否設(shè)置marker隨著道路的走向進(jìn)行旋轉(zhuǎn)landmarkPois:[// 停頓點(diǎn) html 展示內(nèi)容 pauseTime 停留時間 3s{lng:112.628662,lat:38.02281,html:'加油站',pauseTime:3}]})this.marker.addEventListener("click",function(){// this.marker.enableMassClear() // 設(shè)置后可以隱藏改點(diǎn)的覆蓋物this.marker.hide()this.Lushu.start()//this.map.clearOverlays() // 清除所有覆蓋物})},//綁定事件run () {// this.map.clearOverlays() // 清除所有覆蓋物// this.marker.enableMassClear() // 設(shè)置后可以隱藏改點(diǎn)的覆蓋物this.marker.hide()this.Lushu.start()},stop () {this.Lushu.stop()},pause () {this.Lushu.pause()},hide () {this.Lushu.hideInfoWindow()},show () {this.Lushu.showInfoWindow()}}} </script> <style scoped>body, html{width: 100%;height: 100%;margin:0;font-family:"微軟雅黑";}#map_canvas{width:100%;height:700px;}#result {width:100%}#container {overflow: hidden;width: 100%;height: 100%;margin: 0;font-family: "微軟雅黑";}ul li {list-style: none;}.drawing-panel {z-index: 999;position: fixed;bottom: 3.5rem;margin-left: 3rem;padding: 1rem 1rem;border-radius: .25rem;background-color: #fff;box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);}.btn {width: 90px;height: 30px;float: left;background-color: #fff;color: rgba(27, 142, 236, 1);font-size: 14px;border:1px solid rgba(27, 142, 236, 1);border-radius: 5px;margin: 0 5px;text-align: center;line-height: 30px;}.btn:hover {color: #fff;} </style>

效果展示


總結(jié)

以上是生活随笔為你收集整理的vue.js BMap 与BMapLib.lushu 的配置与百度路书,结合项目后台的实例展示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。