vue2+高德地图加遮罩,一些marker显示在遮罩上,一些在遮罩下

// 遮罩的z-index是300,路线是301,marker是302
highLightPoint.initialIndex = highLightPoint.getzIndex();
highLightPoint.setzIndex(302);

项目需求:高德地图上加一个遮罩,画一堆marker,一些marker在遮罩上,一些marker在遮罩下,效果如下图

 通过强制修改css样式实现

遮罩放的位置,如上图,找到元素添加遮罩层

const amapLayerDom = document.getElementsByClassName("amap-layers")[0];
const _overlay = document.createElement("div");
_overlay.id = "customResuceOverlay";
_overlay.className = "page-overlay";
amapLayerDom.appendChild(_overlay);

然后找到渲染marker的框,因为所有marker的外面那层容器设置了z-index的值,所以里面的所有的marker的z-index为多少都不会高于外面设置的z-index,所以将外层容器的z-index设置为auto

const amapMarkersDom = document.getElementsByClassName("amap-markers")[0];
amapMarkersDom.classList.add("z-index-auto");

找到需要浮在遮罩上方的marker,设置他的index,这里使用高德自带的setzIndex方法

// 遮罩的z-index是300,路线是301,marker是302
highLightPoint.initialIndex = highLightPoint.getzIndex(); // 设置之前的z-index
highLightPoint.setzIndex(302);

设置了之后该marker的z-index就会浮在遮罩上方了

注意:该方法有个bug,当设置了marker的z-index之后,关闭弹框,再设置marker的z-index为原来的z-index,而html上该marker对应的z-index没有变回去,因为我的项目是定时刷新的,所以每次刷新的时候之前设置的z-index会在刷新重新绘制的时候变回原来的z-index去,如果不刷新的话,建议是用一个变量存当前的z-index,下次开弹框的时候弹框的,marker的zindex都加1

另外:

画的路线在遮罩之上也很简单,找到画线的canvas 元素,设置他的z-index大于遮罩就好了

                  const _canvas = document.getElementsByClassName(
                    "amap-layer amap-vectors"
                  )[0];
                  if (_canvas) {
                    _canvas.classList.add("z-index-301");
                  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值