mapbox鼠标滑过高亮要素

贴个群号

WebGIS学习交流群461555818,欢迎大家。

成果图

在这里插入图片描述

实现方法

这里借鉴了官网这个例子

https://docs.mapbox.com/mapbox-gl-js/example/hover-styles/

这里是图层的样式配置,通过改变select的true和false,来控制渲染的颜色和宽度

    paint: {
        'line-opacity': 1,
        'line-color': [
            'case',
            ['boolean', ['feature-state', 'select'], false],
            'rgb(0,255,255)',
            ['get','color']
        ],
        // 'line-width':["match",["get","级别"],0,3.5,2],
        'line-width':[
            'case',
            ['boolean', ['feature-state', 'select'], false],
            4,
            2
        ],
    },

选中的颜色select设置为true

        map.on('mousemove','riverDanger',(e) =>{
          if (e.features.length > 0) {
            if (this.heighLight !== null) {
              map.setFeatureState(
                { source: 'riverDanger', id: this.heighLight },
                { select: false }
              );
            }
            this.heighLight = e.features[0].id;
            map.setFeatureState(
              { source: 'riverDanger', id: this.heighLight },
              { select: true }
            );
          }
        })
        map.on('mouseleave', 'riverDanger', () => {
          if (this.heighLight !== null) {
            map.setFeatureState(
              { source: 'riverDanger', id: this.heighLight },
              { select: false }
            );
          }
          this.heighLight = null;
        });

注意这里可能会出现找不到id的情况,那就手动给每一个要素添加ID,比如可以把index给id

      geojsonData.features.forEach((e,index)=>{
        e.id = index
      })
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值