我正在開發一個可以對矢量圖層進行動態分類的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