レンダラーとは、地図機能をクラス
IlvGraphic
や、そのいずれかのサブクラスのグラフィック・オブジェクトに変換する際に使用するオブジェクトです。レンダラーは、 IlvFeatureRenderer インターフェース (ilog.views.maps パッケージに付属する) を実装する必要があります。特定の地図機能をグラフィック・オブジェクトに変換するには、その
makeGraphic
メソッドを使用します。IlvGraphic makeGraphic(IlvMapFeature feature, IlvCoordinateTransformation tr);
2 番目の引数
tr
を使用して、座標変換を指定できます。このような変換の通常の構成方法は、1 番目のパラメーター (ソース座標系) として feature.getCoordinateSystem
を指定し、2 番目のパラメーター (ターゲット座標系) としてマネージャーで設定した座標系 ( IlvCoordinateSystemProperty を介して) を指定して、IlvCoordinateTransformation.CreateTransformation
を呼び出します。座標系と座標変換の詳細は、「座標系間の座標変換」を参照してください。JViews Maps には、ライブラリーで使用可能な各ジオメトリー・タイプにデフォルトのレンダラー一式が含まれます。これらのレンダラーは、パッケージ ilog.views.maps.rendering にあります。 IlvMapPointRenderer は、ポイントのジオメトリーがある地図機能をタイプ IlvMapMarker. また、ライブラリーは、タイプ IlvDefaultFeatureRenderer のグローバル・デフォルト・レンダラーを提供しています。これを使用して、定義済みジオメトリーの地図機能を変換することができます。このレンダラーは、
ilog.views.maps
パッケージにあります。
以下のコード例では、タイプ
IlvMapLineString
のジオメトリーを持つ地図機能を、縮尺が 1/1,000,000 より大きい場合に幅 4 ピクセルの緑色の折れ線に変換する方法を示します。これらのポリラインは、郡の境界線の一部などになります。IlvMapLineRenderingStyle style = new IlvMapLineRenderingStyle(); style.setForeground(Color.green); style.setLineWidth(4); style.setScale(1f/1000000f); IlvDefaultCurveRenderer renderer = new IlvDefaultCurveRenderer(); renderer.setLineRenderingStyle(style); try { // Identity transformation. IlvCoordinateTransformation identity = IlvCoordinateTransformation.CreateTransformation(null, null); IlvGraphic graphic = renderer.makeGraphic(feature, identity); // Adding the graphic object into a manager. manager.addObject(graphic, layerIndex, true); } catch (IlvMapRenderException e) { // Might occur if the geometry is not a curve. System.out.println("This renderer can’t translate the map feature"); System.out.println(e.getMessage()); } catch (IlvCoordinateTransformationException te) { // Might occur if the coordinate transformation could not be // performed. System.out.println("This renderer could not transform the geometry"); System.out.println(te.getMessage()); }
この例のソース・コード一式は、以下のファイルにあります。