是否有一种非迭代的方法来获得计算的mapbox-gl图层?

时间:2017-11-20 14:59:20

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

我试图获取特定的现有图层,以便在第I层创建时应用其部分颜料/布局属性。

目前,我使用以下方式实现:

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

查看#getLayer's实施:

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

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

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

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

有可能吗?

1 个答案:

答案 0 :(得分:1)

在对代码进行一些挖掘之后,我发现这是可能的

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

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

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