根据多个属性设置Mapbox图层文本大小

问题描述 投票:0回答:1

我的地图上有一层点。我希望 id 属于列表的所有点的大小始终为 16。我希望剩余的点根据地图的缩放级别更改其大小。这些条件中的每一个都可以单独实现,但我无法将它们组合起来。

这是我得到的最接近的:

this.map.setLayoutProperty('layer', 'text-size', [
    'match',
    ['get', 'id'], idsToShow, 16,
    ['interpolate', ['linear'], ['zoom'], 6, 6, 8, 16]
]);

当我尝试运行此程序时,出现以下错误:

layers.layer.layout.text-size: "zoom" expression may only be
used as input to a top-level "step" or "interpolate" expression,
or in the properties of atmosphere.

这对我来说表明 Mapbox 无法使用缩放表达式,因此有后备方案。有没有办法在不将数据分成两层的情况下实现这一点?

javascript mapbox-gl-js mapbox-gl
1个回答
0
投票

我想通了。我需要使用 match 语句作为插值语句的输入。

this.map.setLayoutProperty('my-layer', 'text-size',
       ['interpolate', ['linear'], ['zoom'],
       6, ['match', ['get', 'id'], idsToShow, 16, 6],
       8, ['match', ['get', 'id'], idsToShow, 16, 16]
    ]);
© www.soinside.com 2019 - 2024. All rights reserved.