小编Eth*_*ein的帖子

Mapbox GL JS:堆叠图层时在 mouseenter 和 mouseleave 上创建悬停效果时遇到问题(z-index)

我正在努力创建一个悬停效果,我认为应该非常简单,并且也是使用 Mapbox gl js 的开发人员的常见用例。

我有一张有 2 层的地图。第 1 层是符号图层,使用图标来标记地图上的点。第 2 层是符号层,在第 1 层的图标顶部显示分数(文本)。

这是描述该问题的视频

我使用过滤alahttps://www.mapbox.com/mapbox-gl-js/example/hover-styles/来监听鼠标事件并在适当的时候隐藏和显示第2层。

在我的代码中,我正在监听第 1 层上的mouseenter事件mouseleave。我的问题是,当第 2 层通过过滤器的更改显示时,它会导致第 1 层触发 mouseleave 事件,因为第 2 层位于第 1 层之上。鼠标在第 2 层上移动mouseentermouseleave当鼠标事件穿过第 2 层的文本行向下到达第 1 层时,第 1 层的事件会不断触发。这会导致第 2 层在显示和隐藏时闪烁。

我尝试过的事情:

  • 我尝试使用“之前”参数https://www.mapbox.com/mapbox-gl-js/example/geojson-layer-in-stack/

  • 我尝试创建一个位于第 1 层和第 2 层之上的新层(第 3 层),其中包含与第 1 层大小相同的透明图标,并侦听第 3 层上的鼠标事件。

  • 我尝试通过 setStyle (而不是使用过滤器)切换第 2 层的可见性。

  • 我尝试将第 2 层内容作为第 1 层的文本字段,并寻找一种在悬停时显示地图框图层的文本字段的方法(无法弄清楚......这可能吗?)

当通过过滤或样式更改修改图层时,Mapbox gl js 似乎会重新绘制图层顺序。重画似乎总是将受影响的图层放在顶部!?

任何指示或建议将不胜感激。相当难住!

谢谢阅读!

mapbox mapbox-gl-js

3
推荐指数
1
解决办法
3323
查看次数

标签 统计

mapbox ×1

mapbox-gl-js ×1