ベクターレイヤーの動的分類を行うOpenLayersアプリケーションを開発しています。したがって、特定の数のテーマ クラス (カテゴリ) をループして、内部の各クラスのフィルターを定義しようとしています。
OpenLayers.Filter.Function と呼ばれるOpenLayersオブジェクトは、各フィルターを表します。各 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() 関数を実行しているようです。
あなたはなにか考えはありますか?