我正在尝试使用函数过滤器设置规则。 但它不起作用:该层上的线条只是黑色。 更重要的是,我提供的用于过滤功能的功能永远不会被调用。
有人可以指出我正在犯的错误是什么吗?
这是代码。
感谢您的时间和关心。
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,
}
);
答案 0 :(得分:3)
我很高兴与您分享如何使用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,
}
);