vue項目中添加百度地圖功能及解決遇到的問題詳解


第一步,在百度地圖開放平台 申請密鑰 (如果有密鑰可以省略此步驟,朋友有也可以借) 
地址:http://lbsyun.baidu.com/ 
這里寫圖片描述
第二步,創建應用並填寫表單(下面鏈接可參考) 
http://jingyan.baidu.com/article/363872eccda8286e4aa16f4e.html 
這里寫圖片描述 
這個是我的密鑰,不過個人覺得沒用因為沒認證,沒認證的密鑰使用會有提示 
第三部,在百度地圖開放平台 底部有 地圖快速生成工具 點擊進入選擇好你的位置資料 然后點獲取代碼 
這里寫圖片描述
如果你想在你的網站打開時就顯示你的公司名稱的話 那你先選擇好像圖中這樣然后在獲取代碼 
這里寫圖片描述
第四步,在項目中index.html文件里先引入

把 “您的密鑰”換成你申請的密鑰 
這里寫圖片描述
第五步,在template模板里創建一個容器,可以直接復制 生成的代碼里的 然后把js部分復制到項目里 更改其中部分的代碼就完成了 也就是加幾個this

<!--地圖容器--> <div style="width:70%;height:450px;border:#ccc solid 1px;" id="dituContent"></div>
  • 1
  • 2
<script> export default{ data () { return { } }, mounted () { this.initMap() }, methods: { //這幾個地方加this initMap () { this.createMap() ; //創建地圖 this.setMapEvent();//設置地圖事件 this.addMapControl();//向地圖添加控件 this.addMarker();//向地圖中添加marker }, createMap(){ var map = new BMap.Map("dituContent");//在百度地圖容器中創建一個地圖 var point = new BMap.Point(120.328033,31.686802);//定義一個中心點坐標 map.centerAndZoom(point,18);//設定地圖的中心點和坐標並將地圖顯示在地圖容器中 window.map = map;//將map變量存儲在全局 }, setMapEvent(){ map.enableDragging();//啟用地圖拖拽事件,默認啟用(可不寫) map.enableScrollWheelZoom();//啟用地圖滾輪放大縮小 map.enableDoubleClickZoom();//啟用鼠標雙擊放大,默認啟用(可不寫) map.enableKeyboard();//啟用鍵盤上下左右鍵移動地圖 }, addMapControl(){ //向地圖中添加縮放控件 var ctrl_nav = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE}); map.addControl(ctrl_nav); //向地圖中添加縮略圖控件 var ctrl_ove = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1}); map.addControl(ctrl_ove); //向地圖中添加比例尺控件 var ctrl_sca = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT}); map.addControl(ctrl_sca); }, //標注點數組 //創建marker addMarker(){ var markerArr = [{title:"無錫雲熵動力科技有限公司",content:"地址:無錫市惠山經濟開發區智慧路18號<br/>電話:15061509527",point:"120.32801|31.686872",isOpen:1,icon:{w:23,h:25,l:46,t:21,x:9,lb:12}}]; for(var i=0;i<markerArr.length;i++){ var json = markerArr[i]; var p0 = json.point.split("|")[0]; var p1 = json.point.split("|")[1]; var point = new BMap.Point(p0,p1); //這個地方加this var iconImg = this.createIcon(json.icon); var marker = new BMap.Marker(point,{icon:iconImg}); //這個地方加this var iw = this.createInfoWindow(i); var label = new BMap.Label(json.title,{"offset":new BMap.Size(json.icon.lb-json.icon.x+10,-20)}); marker.setLabel(label); map.addOverlay(marker); label.setStyle({ borderColor:"#808080", color:"#333", cursor:"pointer" }); var index = i; //這個地方加this var _iw = this.createInfoWindow(i); var _marker = marker; marker.addEventListener("click",function(){ //這個地方加this this.openInfoWindow(_iw); }); iw.addEventListener("open",function(){ _marker.getLabel().hide(); }) _iw.addEventListener("close",function(){ _marker.getLabel().show(); }) label.addEventListener("click",function(){ _marker.openInfoWindow(_iw); }) if(!!json.isOpen){ label.hide(); _marker.openInfoWindow(_iw); } } }, //創建InfoWindow createInfoWindow(i){ //這個地方復制一下上面的var markerArr 不然會不顯示報錯 var markerArr = [{title:"無錫雲熵動力科技有限公司",content:"地址:無錫市惠山經濟開發區智慧路18號<br/>電話:15061509527",point:"120.32801|31.686872",isOpen:1,icon:{w:23,h:25,l:46,t:21,x:9,lb:12}}]; var json = markerArr[i]; var iw = new BMap.InfoWindow("<b class='iw_poi_title' title='" + json.title + "'>" + json.title + "</b><div class='iw_poi_content'>"+json.content+"</div>"); return iw; }, //創建一個Icon createIcon(json){ //這個地方我是用本地圖標圖片的 var tubiao=require("../assets/mkicon.png") var icon = new BMap.Icon(tubiao, new BMap.Size(json.w,json.h),{imageOffset: new BMap.Size(-json.l,-json.t),infoWindowOffset:new BMap.Size(json.lb+5,1),offset:new BMap.Size(json.x,json.h)}) return icon; } } } </script>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM