• 百度地图在VUE项目中插入点位及点位信息弹框


    在项目中需要使用地图功能,效果图如下:

    具体步骤如下:

    1、申请百度地图密钥
    2、安装vue-baidu-map
    3、在main.js中引入vue-baidu-map.js

    import BaiduMap from 'vue-baidu-map'
        Vue.use(BaiduMap, {
        ak: 'ak值'
    });

    4、template中使用

    <baidu-map
        :zoom="zoom"
        class="baidu-map"
        :map-click="false"
        @ready="handler"
        >
        <bm-info-window
          :position="infoWindow.point"
          :title="infoWindow.title"
          :show="infoWindow.show"
          @close="infoWindowClose"
          @open="infoWindowOpen"
        >
      </bm-info-window>
    </baidu-map>
    <!-- 地图弹框 -->
    <mapEchartsCompany
        v-show="companyShow"
        :companyData="companyData"
        @closeShow="closeShow"
    />

    5、JS中使用

      5.1、添加点位及设定地图和弹框属性:

    <script>
        import map_off from "@/assets/img/map/map_off.png";
        import map_on from "@/assets/img/map/map_on.png";
    
        var mMap; // 地图容器
        var mBMap; // 地图类
        const markerLampblackMaps = new Map();
    
        var labelIsShow = true;
        /**
         * 添加Marker
        */
        var addMarker = function (point, item, fun) {
        var off = map_off
        var on = map_on
    
        var myIcon = new BMap.Icon(on, new BMap.Size(32, 32), {
            anchor: new BMap.Size(10, 25),
        });
    
        if (item.status == '正常') {
            myIcon = new BMap.Icon(off, new BMap.Size(32, 32), {
                anchor: new BMap.Size(10, 25),
            });
        } else {
            myIcon = new BMap.Icon(on, new BMap.Size(32, 32), {
                anchor: new BMap.Size(10, 25),
            });
        }
    
    var marker = new mBMap.Marker(point, { icon: myIcon });
        var label;
    
        if (item.name) {
            label = new mBMap.Label(item.name, {
                offset: new mBMap.Size(25, -10)
            })
        }
    
        label.addEventListener('click', fun)
    
        if (labelIsShow) {
            marker.setLabel(label)
        }
    
        marker.addEventListener('click', fun)
    
        mMap.addOverlay(marker)
        return marker
    };
    export default {
        components: { mapEchartsCompany }, // 弹框组件
        data() {
            return {
                infoWindow: {
                    point: {
                        lng: '',
                        lat: ''
                    },
                    title: "",
                   show: false,
                },
            companyData: {}, // 弹框数据
            companyShow: false
        };
    },
    </script>                    


      5.2、引入地图的方法:

    // 地图z主题
        handler({ BMap, map }) {
          mBMap = BMap;
          mMap = map;
          
          map.centerAndZoom(new             BMap.Point(106.757915842,31.8691891592), 5);
          map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
          this.mapFindAllEnterpriseFun()
        },


      5.3、数据循环并添加点位:

        data.forEach(function(params) {
                const lng = parseFloat(params.longitude)
                const lat = parseFloat(params.latitude)
                if (!isNaN(lng) && !isNaN(lat)) {
                  _this.center.lng = lng
                  _this.center.lat = lat
                  // eslint-disable-next-line no-undef
                  const point = new BMap.Point(lng, lat)
    
                  var marker = addMarker(
                    point,
                    params,
                    function() {
                      // 弹框传值
                      _this.companyData = params
                      _this.infoWindowOpen()
                    },
                  )
                  markerLampblackMaps.set(marker)
                }
              })

      5.4、弹框isShow方法:

        // 弹框打开关闭
        infoWindowClose() {
          this.companyShow = false
        },
        infoWindowOpen() {
          this.companyShow = true
        },
        // 油烟弹框传值
        closeShow(val) {
          this.companyShow = val
        }

    数据弹框的代码就不贴了,该传得值传对,自己想做成什么样的都行

    整理的有点啰嗦了,希望有帮助~~~

  • 相关阅读:
    JS中const的使用
    JS的作用域,闭包的理解
    python中函数的默认参数是空数组
    asp.net 导出 Excel
    asp.net 导出 Excel 身份证格式显示格式问题
    HTML5
    JQuery中checkbox选择器
    JQuery中DOM操作(一)
    PL/SQL 创建用户及权限操作
    PL/SQL 表约束
  • 原文地址:https://www.cnblogs.com/acmyun/p/15900229.html
Copyright © 2020-2023  润新知