应用程序上下文样式函数(OpenLayers 4)

时间:2017-05-01 16:10:01

标签: javascript openlayers

我正在尝试为Draw交互(OpenLayers 4)找出一种具有app-contextual样式函数的方法。

我有一个使用自定义样式函数(我的一个对象的原型方法)构建的Draw Interaction,但问题是该函数将使用 this 作为 Window < / em>,所以我无法访问我的应用程序上下文。

由于我不对该电话负责(由OpenLayers调用),我无法指定我想要的 this

我是否在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添加为Window属性不是解决方案,因为我可能有多个MyClass实例。

感谢您的任何建议

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案:

Function.prototype.bind()方法可以完成相同的工作。在为交互提供样式功能时使用它:

style: this.styleFunction.bind(this)

更多信息:Documentation