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

时间:2017-04-08 09:00:58

标签: javascript mapbox mapbox-gl-js mapbox-gl

我有一组标记,我将其添加到地图中。现在,我正在使用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:在Function.module.exports中找到[visible,none],[object Object]之一.emitErrors(mapbox-gl.js:149)

毋庸置疑,我的标记不会显示。有谁知道我做错了什么?非常感谢。

1 个答案:

答案 0 :(得分:2)

首先,澄清一下,你在谈论"图标" ("符号")图层的一部分 - 不是" markers",这是在样式之外添加到地图的内容。

现在,这里的简单答案是visibility属性不支持数据驱动样式(请注意表中,没有"数据驱动样式&#34 ;行)。 Mapbox表示他们不打算从内存中实现它。

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

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

(我说"几乎"相同的结果,因为"可见"但0-opacity图标仍然会在地图平移和缩放时加载,所以它稍微有点表现更差。)