Mapbox GL - 无法通过缩放功能设置可见性

Mapbox GL - cant set visibility through the zoom function

我有一组标记添加到我的地图中。现在,我正在使用 Mapbox GL 缩放功能根据缩放级别调整它们的大小——这很有效。现在我想对可见性做一些类似的事情——当缩放级别为 7 或更低时隐藏这些标记。我使用这段代码来定义标记的布局:

"layout": {
          "icon-image": "marker-{icon}",
          "icon-allow-overlap": true,
          "icon-size": {
              stops: [[6, 0.12], [11, 0.3], [16, 0.3]]
           },
           "icon-offset": [0, -42],
           "visibility": {
              stops: [[7, 'none'], [8, 'visible']]
           }
     }

但是,这是我在 js 控制台中得到的错误 - “错误:layers.places.layout.visibility:预期 [visible,none] 之一,[object Object] found在 Function.module.exports.emitErrors (mapbox-gl.js:149)"

不用说,我的标记没有显示。有谁知道我做错了什么?非常感谢。

首先,澄清一下,你说的是 "icons"("symbol" 的一部分)层——而不是“markers”,它们是添加到地图之外的东西风格。

现在,这里的简单答案是 visibility 属性 不支持数据驱动样式(请注意 table,没有 "data-driven styling" 行).根据记忆,Mapbox 表示他们不打算实施它。

相反,您可以使用 icon-opacity 来获得几乎相同的结果:

"paint": {
    "icon-opacity": {
        stops: [[7, 0], [8, 1]]
    }
}

(我说 "almost" 相同的结果,因为 "visible" 但 0 不透明度图标在地图平移和缩放时仍会加载,因此性能略差。)