2017-11-20 11 views
2

私は作成しているレイヤーにそのペイント/レイアウトプロパティの一部を適用するために、特定の既存のレイヤーを取得しようとしています。計算されたmapbox-glレイヤーを取得する反復的な方法はありますか?

現在、私が使用してそれを達成:

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

#getLayer's実装を見てみると:高速ですが、彼らは possiblyEvaluatedだとして予め計算された値を持つ層を返し

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

を。

getStyles()は、スタイル内の各レイヤーのレイアウトプロパティとペイントプロパティの両方で、それぞれの呼び出しがシリアル化メソッドを実行するため、かなり高価です。

計算してシリアライズした単一のレイヤーを取得するか、アクセス時間(O)が1の辞書を取得したいと考えています。

それは可能ですか?

答えて

1

いくつかは、彼らのコードの周りに掘った後、私はこれがシリアル化()メソッドは、特定の層ではなく、他のすべてをシリアライズします

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

ことが可能であることを発見しました。

ドキュメントでサポートされているかどうかわからないので、使用時に注意してください。

関連する問題