【VUE-地图】百度地图不用infoWindow实现自定义悬浮框

最近写项目搞地图需求,需要用百度地图的标点跟展示信息,但是infoWindow改样式很麻烦,我突然想到可以用el-popover来实现,具体代码如下

地图组件中使用marker方法

//只需要用marker方法就可以实现
this.markers.forEach(marker => {
        const point = new window.BMapGL.Point(marker.lng, marker.lat);
        const icon = new window.BMapGL.Icon(marker.icon, new window.BMapGL.Size(20, 20));
        const markerObj = new window.BMapGL.Marker(point, { icon: icon });

        const infoWindow = new window.BMapGL.InfoWindow(popHtml || '', {
          offset: new window.BMapGL.Size(0, -20),
          enableAutoPan: false,
        });

        markerObj.addEventListener('mouseover', function (e) {
          // 返回鼠标位置信息
          const pixel = new window.BMapGL.Pixel(e.clientX, e.clientY)
          _this.$emit('markerMouseover', marker, pixel);
        });
        markerObj.addEventListener('mouseout', function () {
          _this.$emit('markerMouseout', marker, infoWindow);
        });

        const label = new window.BMapGL.Label(marker.name, {
          position: point,
          offset: new window.BMapGL.Size(-30, 15), // 将Label覆盖物放置在标点下方
          fontSize: '10px',
          backgroundColor: '#fff', // 设置背景颜色为白色
          border: 'none !important', // 去掉Label覆盖物的边框
        });
        this.baidu.addOverlay(label);
        this.baidu.addOverlay(markerObj);
      });

父组件中调用这两个暴露的方法和el-popover

  <el-popover class="posinfopopper" :style="{ top: popy + 'px', left: popx + 'px' }"
				ref="posinfopopper"
				id="mappoper"
				popper-class="mappopper"
				placement="right"
				width="300"
				trigger="hover"
				:popper-options="{ boundariesElement: 'viewport', gpuAcceleration: false, }"
				v-model="showposinfo">
        
       
			    <!--   你的自定义窗口结构  -->
			</el-popover>

调用这两个方法就可以显示隐藏了,

    markerMouseover (marker, pixel) {
      console.log(marker, pixel);
      this.showposinfo = true
      this.mapType = marker.type
      this.info.name = marker.name
      this.popy = pixel.y - 50
      this.popx = pixel.x - 300
    },
    markerMouseout (marker, infoWindow) {
      this.showposinfo = false;
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光已回不到旧日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值