2017-05-01 5 views
0

私は、描画相互作用(OpenLayers 4)のためのアプリコンテキストスタイルの関数を持つの方法を見つけようとしています。アプリケーションコンテキストスタイル関数(OpenLayers 4)

は私がカスタムスタイル機能(私のオブジェクトの一つの原型法)で構成ドロー相互作用を持っていますが、問題は、関数がこのとしてウィンドウと呼ばれることがあるので、私がすることはできません私のアプリコンテキストへのアクセス。

私はその呼び出し(OpenLayersによって呼び出された)に責任がないので、を指定することはできません。これはです。

OpenLayer APIや、問題を解決する可能性のあるjavascript(私は熟練者ではない)の詳細はありますか?ここで

は私のコードです:

function MyClass(){ 
    (...) 

    // This state should impact the draw interaction style 
    this.myState = someValue; 

    // My interaction 
    this.addInteraction = new ol.interaction.Draw({ 
     (...) 
     style: this.styleFunction 
    }); 
} 

// My style function which need to access this.myState 
MyClass.prototype.styleFunction = function(feature, resolution) { 

    // The following this is Window instead of MyClass.this 
    if(this.myState) 
     return style1; 
    else 
     return style2; 
} 

は、WindowプロパティとしてMyClass.thisを追加し、私はMyClassのの複数のインスタンスを有することができるようなソリューションではありません。任意の提案

答えて

0

ため

おかげで、私は最終的に解決策を見つけた:

Function.prototype.bind()方法は、正確な仕事をします。

style: this.styleFunction.bind(this) 

詳細情報:Documentation

を対話にスタイル機能を与えるときにそれを使用します
関連する問題