2012-07-23 111 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, 
    } 
);