IlvMapAttributeFilter オブジェクトは、 IlvGraphic インスタンスで見つかった値からスタイリング属性の値を計算するために使用されます。通常、この値は
IlvGraphic
オブジェクトに付加された IlvFeatureAttributeProperty 名前付きプロパティーから取得します。このようなフィルターをインストールするには、フィルターを IlvMapStyle オブジェクトに設定します。次の例は、「VALUE」機能属性に従って地図のグラフィック・オブジェクトの前景を定義するカスタム・フィルター・クラスを示しています。
/** * Computes the foreground from a graphic's IlvFeatureAttribute */ class ColorAttributeFilter implements IlvMapAttributeFilter { /** * Method that returns the new color computed from the "VALUE" * feature attribute. If DEFAULT_VALUE is returned, the style value on which * the filter is installed will not be affected. */ public Object get(IlvGraphic g, String attributeName) { if(IlvPolylineStyle.FOREGROUND.equals(attributeName)) { IlvAttributeProperty p = (IlvAttributeProperty) g.getNamedProperty(IlvAttributeProperty.NAME); if(p == null) return DEFAULT_VALUE; Object o = p.getValue("VALUE"); Object ret = convertObjectToColor(o); if(ret == null) return DEFAULT_VALUE; return ret; } }
次のコード例は、カスタム・フィルター・クラスを地図レイヤー・スタイルにインストールする方法を示しています。
IlvMapAttributeFilter filter = new ColorAttributeFilter(); IlvMapLayer layer = getLayer(); IlvMapStyle style = layer.getStyle(); style.setAttributeFilter(filter);
フィルターがインストールされたら、属性値を取得するための要求が出され、フィルターのメソッドを取得します。