2012-07-23 51 views
1

我试图使用函数过滤器来设置规则。 但它不起作用:该层上的线条只是黑色。 更重要的是,我提供的过滤功能的功能从未被调用过。OpenLayers.Filter.Function未按预期工作。实际上,根本没有工作

有人能指出我犯的错误吗?

这是代码。

谢谢你的时间和善良的关注。

var my_filter = new OpenLayers.Filter.Function(
    function(attributes) { 
     console.log(attributes); 
     var x=0; 
     return true; 
}); 

var ruleLow = new OpenLayers.Rule({ 
    filter:my_filter , 
    symbolizer: {pointRadius: 10, fillColor: "green", 
       fillOpacity: 0.5, strokeColor: "green"} 
}); 


var my_style=new OpenLayers.Style(null,ruleLow); 

var my_style_map=new OpenLayers.StyleMap({ 
    "temporary":my_style, 
    "default":my_style, 
    "select":my_style 
}); 

this.vectors= new OpenLayers.Layer.Vector(
    "Vector Layer", 
    { 
     styleMap:my_style_map, 
     renderers:this.renderer, 
    } 
); 

回答

2

我很高兴与大家分享如何使用OpenLayers.Filter.Function! (所以我解决了我有的问题): 基本上我不得不改变。

谢谢反正。

var my_filter = new OpenLayers.Filter.FeatureId({ 
    **type: OpenLayers.Filter.Function,** 
    evaluate:function(attributes) { 
     console.log(attributes); 
     var x=0; 
     return true; 

    } 
}); 
var ruleLow = new OpenLayers.Rule({ 
    filter:my_filter, 
    }); 


var my_style=new OpenLayers.Style({pointRadius: 7, fillColor: "#FF3300", 
       fillOpacity: 0.5, strokeColor: "#FF3300"},**{rules:[ruleLow]}**); 

var my_style_map=new OpenLayers.StyleMap({ 
    "temporary":my_style, 
    "default":my_style, 
    "select":my_style 

}); 
this.vectors= new OpenLayers.Layer.Vector(
    "Vector Layer", 
    { 
     styleMap: my_style_map, 
     renderers:this.renderer, 
    } 
);