我正在开发一个可以对矢量图层进行动态分类的OpenLayers应用程序。因此,我试图循环访问特定数量的专题类(类别)并为每个类定义一个过滤器。在for循环中覆盖函数
一个名为的OpenLayers对象OpenLayers.Filter.Function表示每个过滤器。每个OpenLayers.Filter.Function都将覆盖OpenLayers类的evaluate()函数。
我的代码如下所示:
var rules = new Array();
for (var i = 0; i < numClasses; i++) {
filter_x = function() {
return new OpenLayers.Filter.Function({
evaluate: function(attributes) {
// some code to define the filter
// uses specific values: array[i] & array[i+1
}
var rule_x = new OpenLayers.Rule({
filter: filter_x,
symbolizer: { fillColor: colors[i],
fillOpacity: 0.5, strokeColor: "white"}
});
rules.push(rule_x);
}
thematicStyle.addRules(rules);
可惜,这是行不通的。看来所有的过滤器都执行最后一个循环的evaluate()函数。
你有什么想法吗?
无论你的问题是什么,都不会执行'return'语句下的任何代码。 – inhan
感谢您的通知,当然你是对的。在对代码进行实验时,我有点困惑。 ;) – rjw