2017-05-01 69 views
0

我試圖找出一種方式具有應用程序上下文風格功能爲繪製交互(OpenLayers 4)。App-contextual style function(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; 
} 

添加MyClass.this作爲一個窗口屬性不是一個解決方案,我可以有MyClass的多個實例。

感謝您的任何建議

回答

0

我終於找到了一個解決方案:

Function.prototype.bind()方法做精確的工作。

style: this.styleFunction.bind(this) 

更多信息:Documentation

給人伴奏功能時交互使用它