OpenLayers 3 - 为渲染的特征

时间:2016-07-05 19:32:15

标签: openlayers-3

是否可以获取所选功能的应用样式?我的图层使用样式函数而不是ol.style.Style。当我调用myFeature.getStyle()时,它返回函数。

根据我在此处和其他地方的回复,使用我迄今为止尝试的一些内容更新我的问题。

我最终为每一层创建了一个选择样式函数。

这不起作用,不返回任何样式:

selectInteraction = new ol.interaction.Select( {
    style: function( feature, resolution ) {
        if ( feature.selectStyle ) {
            return feature.selectStyle;
        }
    },
    layers: mylayers
} );

另外,由于上述原因,我收到以下错误:

Uncaught TypeError: style.getImage is not a function
    ol.renderer.vector.renderFeature                @ol.js:38455
    ol.renderer.canvas.VectorLayer.renderFeature    @ol.js:44202
    renderFeature                                   @ol.js:44148
    ol.renderer.canvas.VectorLayer.prepareFrame     @ol.js:44164
    ol.renderer.canvas.Map.renderFrame              @ol.js:45268
    ol.Map.renderFrame_                             @ol.js:52034
    (anonymous function)                            @ol.js:50898

这确实有效,使用我的选择样式呈现该功能。但是,我不想管理重新设置样式,所以它确实需要在selectInteraction中实现:

evt.selected.forEach( function( evt ) {
    evt.setStyle( evt.selectStyle );
}, this );

2 个答案:

答案 0 :(得分:0)

我认为您必须使用myFeature.getStyleFunction()代替myFeature.getStyle()

祝你好运。

答案 1 :(得分:0)

您应该使用该功能调用该函数(如果您的样式函数依赖于它,则可以选择分辨率)。所以类似于:myFeature.getStyle()。call(this,feature);或myFeature.getStyle()。call(this,feature,resolution);