Mapbox - 实现油漆不透明度的三种状态

标签 mapbox mapbox-gl-js mapbox-gl

我尝试为以下情况设置 3 种不透明状态:

  • 点击 = 不透明度:0.8
  • 悬停 = 不透明度:0.6
  • 默认 = 不透明度:0.4

到目前为止我有这个代码:

             'paint': {
                 'fill-color': '#627BC1',
                 'fill-opacity': [
                     'case',
                     ['boolean', ['feature-state', 'hover'], false],
                     0.6,
                     0.4
                 ]
             }  

但是鉴于它是 bool 值,有人可以帮助我理解如何将其变成具有三种状态而不是 2 个状态的数组吗?

这是一个可用的示例:

https://codepen.io/hiven/pen/NWwBXJj

詹姆斯

最佳答案

您应该能够执行以下操作

paint: {
  "fill-color": "#627BC1",
  "fill-opacity": [
    "case",
    ["==", ["feature-state", "mystate"], 1],
    0.6,
    ["==", ["feature-state", "mystate"], 2],
    0.8,
    0.4
  ]
}

然后你只需根据需要设置“mystate”...

  // Hover 
  map.setFeatureState(
    { source: "states", id: clickedStateId },
    { mystate: 1 }
  );

  // Clicked
  map.setFeatureState(
    { source: "states", id: clickedStateId },
    { mystate: 2 }
  );

默认值为0.4

通过这种方式,您可以支持任意数量的状态,每个状态都有自己的值 - 而不是简单的 bool 值“真/假”

关于Mapbox - 实现油漆不透明度的三种状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71255147/

相关文章:

ios - 使用 KIF 双击

ios - swift Mapbox 3.01 框架

javascript - Mapbox GL JS - 数据驱动样式 - 查找图层中数据的最小值和最大值或范围

Mapbox gl : On mouse hover on layers change cursor pointer style

ios - 使用 Cocoapods 的框架错误 Mapbox

mapbox - 向 Mapbox map 添加可折叠侧边栏

android - Mapbox Android SDK 4.0.0+ - 如何在给定位置设置缩放和居中 map ?

mapbox - 调整 map 的不透明度

javascript - 使用 RxJS 在另一个序列之后运行一个序列

javascript - Mapbox React Native 无法加载样式