h18857377611 2021-11-13 16:42 采纳率: 25%
浏览 575
已结题

vue-amap 单击marker点高亮显示

我使用vue-amap组件显示marker点,部分代码如下

<el-amap-marker v-for="marker in markers" :key="marker.index" :position="marker.position" :events="marker.events" ></el-amap-marker>

在下方method方法中的显示marker的方法中,点击事件e.target.setIcon(afticon);成功在点击后变换红色图标,结果如下

img

let afticon=new AMap.Icon({
        size: new AMap.Size(19, 31),//图标大小
        imageSize:new AMap.Size(19, 31),
        image: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-red.png"
      });
markers.push({
          position: item.position,
          offset: new AMap.Pixel(0, 0),
          icon:null, //不设置默认蓝色水滴
          events: {
            click(e) {
              e.target.setIcon(afticon);
              //this.$refs.map.$$getInstance().setFitView(item.position[index]);
              that.srcList1 = that.srcLists1[index];
              //that.window = that.windows[index];
              // 方法:鼠标移动到点标记上,显示相应窗体
              that.windows1.forEach((window1) => {
                window1.visible = false; // 关闭窗体
              });
              that.window1 = that.windows1[index];
              that.$nextTick(() => {
                that.window1.visible = true;
                //that.$refs.map.$$getInstance().setFitView(item.position[index])
              });
            },
          },
        });

但如何写使得点击下一个点之后,前一个点可以变回原来的蓝色图标

  • 写回答

1条回答 默认 最新

  • 孙叫兽 前端领域优质创作者 2021-11-13 23:31
    关注

    写一个watch监听事件,如果当前的是红色,上一个显示active的红色图标取消,最好设置一个标志位,

    //data里面定义显示红色图标的标志
    showred:false;
    //然后点击的方法里面{
    this.showred = true;
    }
    这种方式最简单
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月20日
  • 创建了问题 11月13日

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答