有没有一种非迭代的方法来获取计算的 mapbox-gl 层?

Is there a non iterative way to get a computed mapbox-gl layer?

我正在尝试获取特定的现有图层,以便在我正在创建的图层上应用它的某些 paint/layout 属性。

目前,我使用:

let remoteLayer: mapboxgl.Layer = this.map.getStyle()
                                  .layers
                                  .find(layer => layer.id == mapboxRemoteLayerID);

查看 #getLayer's 实施:

getLayer(id: string): Object {
        return this._layers[id];
    }

哪个更快,但是 returns 层具有预先计算的值,因为它们是 possiblyEvaluated

getStyles() 非常昂贵,因为每次调用都会对样式中每个图层的布局和绘制属性运行一个序列化方法。

我想要计算和序列化单层,或者访问时间为 (O)1 的字典。

可能吗?

在深入研究他们的代码后,我发现这是可行的

let remoteLayer: mapboxgl.Layer = (this.map.getLayer(mapboxRemoteLayerID) as any).serialize();

serialize() 方法只会序列化特定层而不是所有其他层。

我不确定他们的文档是否支持,所以使用时请注意。