vue使用百度地图的循环显示标注图标--标注点的移入移出点击事件--修改标注点

百度地图

import bmapJSON from '../../../assets/js/custom_map_config.json'
import Micon from '../../../assets/icon/marker2.png'
import MiconHover from '../../../assets/icon/markerHover.png'
import MiconActive from '../../../assets/icon/markerActive.png'
let that = this;
      let projectList = this.projectList
      var bmap = new BMap.Map("map");    // 创建Map实例
      var mapstyle = bmapJSON
      this.globalMap = bmap;
      if (projectList.length > 0) {
        bmap.centerAndZoom(new BMap.Point(parseFloat(projectList[0].gpsX), parseFloat(projectList[0].gpsY)), 14);
      } else {
        bmap.centerAndZoom(new BMap.Point(116.404197, 39.909982), 14);  // 初始化地图,设置中心点坐标和地图级别(默认背景)
      }
      bmap.enableScrollWheelZoom(true);     // 开启鼠标滚轮缩放
      bmap.setMapStyleV2({styleJson:mapstyle});  //百度开发平台下载的地图样式json文件
      for (var i = 0; i < projectList.length; i++) { //循环创建标注点
        let myIcon = ''
        if (projectList[i].sectionState === 'SHUTDOWN') {
          myIcon = new BMap.Icon(Micon, new BMap.Size(60,119));
        } else {
          myIcon = new BMap.Icon(Micon, new BMap.Size(60,119));
        }
        var point = new BMap.Point(parseFloat(projectList[i].gpsX), parseFloat(projectList[i].gpsY));
        var marker = new BMap.Marker(point, {
          icon: myIcon
        })
        var label = new BMap.Label(projectList[i].sectionName, { offset: new BMap.Size(49, 2) });//label的样式设置
        label.setStyle({
          display: "none",
          color: "#fff",
          fontSize: "12px",
          fontFamily: "微软雅黑",
          backgroundColor: "rgb(11,34,44)",
          padding: "5px 10px",
          borderWidth: 1,
          borderColor: "rgb(0,254,212)",
          borderRadius: "6px",
          borderLeft:'none',
        });

        marker.setLabel(label);
        marker.customData = { 'data': projectList[i] } // 添加标点数据
        marker.addEventListener("mouseover", function (e,i) {//鼠标移入事件
          var label = this.getLabel()
          label.setStyle({ display: "block", borderColor: "#fe8418"}); //鼠标移入显示窗口
          let icon = new BMap.Icon(MiconHover, new BMap.Size(60,119));//鼠标移入改变标注点图标
          this.setIcon(icon);
        });
        marker.addEventListener("mouseout", function (e) {
          var label = this.getLabel()
          label.setStyle({ display: "none",borderColor: "rgb(0,254,212)"});//鼠标隐藏显示窗口
          let icon = new BMap.Icon(Micon, new BMap.Size(60,119));//鼠标移出改变标注点图标
          this.setIcon(icon);
        });
        marker.addEventListener("click", function (e) {
          console.log(e.target.customData.data)
          that.showSectionInfo(e.target.customData.data)
          let icon = new BMap.Icon(MiconActive, new BMap.Size(60,119));
          this.setIcon(icon);
          // if (that.mapType === "danger") {
          //   let info = e.pixel
          //   that.$emit('acceptSectionInfo', info, e.target.customData.data)
          // } else {
          //   let info = e.target.customData.data
          //   that.$emit('acceptSectionInfo', info)
          // }

        });
        this.markerList.push(marker)
        bmap.addOverlay(marker); // 添加标点
      }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
vue、konva标注多边形和矩形是指在vue框架下使用konva库实现对多边形和矩形进行标注的一种解决方案。 在demo2.0中,我们可以首先使用vue-cli创建一个新的vue项目,并安装konva库。接下来,在项目中引入konva库,并创建一个konva舞台(Stage)和一个konva层(Layer),用于显示多边形和矩形。 对于多边形标注,我们可以监听用户的鼠标点击事件,并使用konva的Line组件来绘制多边形。当用户点击时,我们可以记录下鼠标的坐标,并将其添加到多边形的坐标数组中。同时,我们还可以在每次点击后重新绘制多边形,显示出用户已经绘制的线段。 对于矩形标注,我们可以监听用户的鼠标按下和抬起事件,并分别记录下按下和抬起时的鼠标坐标。在按下和抬起时,我们可以使用konva的Rect组件来绘制矩形,并根据按下和抬起的坐标计算出矩形的宽度和高度。 除了标注绘制外,我们还可以对绘制的多边形和矩形进行编辑和删除。例如,我们可以监听用户的鼠标双击事件,并根据鼠标的位置找到用户点击的多边形或矩形。然后,我们可以在选中的多边形或矩形上显示编辑手柄,并监听手柄的拖拽事件,实现对多边形或矩形的位置、大小的编辑。同时,我们可以提供一个删除按钮,用户点击后可以将选中的多边形或矩形删除。 总之,vue、konva标注多边形和矩形的demo2.0提供了一个方便实用的工具,可用于在图形界面上进行多边形和矩形的标注,并具备编辑和删除功能。通过这种方式,用户可以更加直观地进行图形标注和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一介青烟小生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值