赞
踩
公司要求在云平台上添加一个页面,调用百度地图,在上面标记相关地点,鼠标滑过是显示该地点的数据,点击标记跳转到详细数据浏览页面。一边做一边百度终于实现了(#.#)。
npm install vue-baidu-map --save
<script type="text/javascript"
src="//api.map.baidu.com/api?v=2.0&ak=秘钥"></script>
秘钥自己申请或者百度一个都可
<div class="baidumap" id="allmap"></div>
mounted() { this.baiduMap(); }, baiduMap() { var map = new BMap.Map("allmap"); // 创建地图实例 for (var i = 0; i < this.list.length; i++) { var point = new BMap.Point( this.list[i].longitude, this.list[i].latitude ); var infoMessage =this.list[i].name; //如果要显示其他数据,加到infoMessage中 infoMessage += "<br><br><div class='nodate'>无数据!</div>"; //调用创建marker标记的方法, var marker = this.createMarker( point, infoMessage, this.list[i].number, ); map.addOverlay(marker); //添加marker var fNameLabel = this.setLabelStyle(this.list[i].name); marker.setLabel(fNameLabel); // 添加百度label*/ } var center = new BMap.Point(118.546015, 36.735546); //设置中心点坐标 map.centerAndZoom(center, 8); //设置中心点和地图级别 map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 map.addControl(new BMap.NavigationControl()); map.addControl(new BMap.ScaleControl()); map.addControl(new BMap.OverviewMapControl()); map.addControl(new BMap.MapTypeControl()); },
//创建maeker和infowindow //传入的参数为:坐标,弹框中要显示的信息,厂区号 createMarker(point, iw, paramNumber) { var markerx = new BMap.Marker(point); //鼠标停留发生的事件 markerx.addEventListener("mouseover", function(e) { this.openInfoWindow(new BMap.InfoWindow(iw)); }); //鼠标划出发生的事件 markerx.addEventListener("mouseout", function(e) { this.closeInfoWindow(new BMap.InfoWindow(iw)); }); //点击标记发生的事件 var that = this; markerx.addEventListener("click", function(e) { that.$router.push({ path: "点击之后要跳转的路径", query: { paramnumber: paramNumber }//给跳转页面传递的参数 }); }); return markerx; },
<template> <div class="app-container"> <div class="baidumap" id="allmap"></div> </div> </template> <script> export default { name: "pm-distribution", components: {}, data() { return { tokenPiece: this.$store.state.user.token.split(".")[1].slice(-34, -25), visible: null, paramNumber: null, //页面跳转传递的厂区号 list: null, flag: true, listLoading:true, } }, created() { this.fetchData(); }, mounted() { this.baiduMap(); }, methods: { fetchData() { this.listLoading = true; this.list = this.$store.state.user.factoryInfo; this.listLoading = false; for (var i = 0; i < this.list.length; i++) { this.factory = this.list[i].number; /* this.queryGroup(); */ } }, baiduMap() { var map = new BMap.Map("allmap"); // 创建地图实例 for (var i = 0; i < this.list.length; i++) { var point = new BMap.Point( this.list[i].longitude, this.list[i].latitude ); var infoMessage =this.list[i].name; //如果要显示其他数据,加到infoMessage中 infoMessage += "<br><br><div class='nodate'>无数据!</div><br><span class='reminder'>点击标记获取更多信息</span>"; //调用创建marker标记的方法, var marker = this.createMarker( point, infoMessage, this.list[i].number, ); map.addOverlay(marker); //添加marker } var center = new BMap.Point(118.546015, 36.735546); //设置中心点坐标 map.centerAndZoom(center, 8); //设置中心点和地图级别 map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 map.addControl(new BMap.NavigationControl()); map.addControl(new BMap.ScaleControl()); map.addControl(new BMap.OverviewMapControl()); map.addControl(new BMap.MapTypeControl()); }, //创建maeker和infowindow //传入的参数为:坐标,弹框中要显示的信息,厂区号 createMarker(point, iw, paramNumber) { var markerx = new BMap.Marker(point); //鼠标停留发生的事件 markerx.addEventListener("mouseover", function(e) { this.openInfoWindow(new BMap.InfoWindow(iw)); }); //鼠标划出发生的事件 markerx.addEventListener("mouseout", function(e) { this.closeInfoWindow(new BMap.InfoWindow(iw)); }); //点击标记发生的事件 var that = this; markerx.addEventListener("click", function(e) { that.$router.push({ path: "点击之后要跳转的路径", query: { paramnumber: paramNumber }//给跳转页面传递的参数 }); }); return markerx; }, } }; </script> <style > .baidumap { width: 100%; height: 650px; } /* 去除百度地图版权那行字 和 百度logo */ .baidumap > .BMap_cpyCtrl { display: none !important; } .baidumap > .anchorBL { display: none !important; } /* 弹出框中标题样式 */ .title { color: darkgreen; text-align: center; height: 10px; } /* 弹出框中提示“无数据”的样式 */ .nodate { color: dimgrey; text-align: center; } /* 弹出框底部的点击提示样式 */ .reminder { font-size: 12px; color: darkcyan; margin-left: 100px; } </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。