我的地图上有一层点。我希望 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 无法使用缩放表达式,因此有后备方案。有没有办法在不将数据分成两层的情况下实现这一点?
我想通了。我需要使用 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]
]);