A renderer is an object that is used to transform a map feature
into a graphic object of the class
IlvGraphic
or one of its subclasses.
A renderer must implement the IlvFeatureRenderer interface, which is
supplied in the ilog.views.maps package. To transform a given
map feature into a graphic object, you use its
makeGraphic
method:
IlvGraphic makeGraphic(IlvMapFeature feature, IlvCoordinateTransformation tr);
The second argument,
tr
, allows you to specify a coordinate transformation. A typical way
of constructing such a transformation is to call
IlvCoordinateTransformation.CreateTransformation
with
feature.getCoordinateSystem
as its first parameter (the Source coordinate system) and the
coordinate system set on the Manager (through IlvCoordinateSystemProperty) as second
parameter (the Target coordinate system). For information about
coordinate systems and coordinate transformations, see Converting coordinates between coordinate
systems.
JViews Maps includes a
set of default renderers for each one of the geometry types
available in the library. These renderers can be found in the
package ilog.views.maps.rendering. The IlvMapPointRenderer, for example, transforms
a map feature whose geometry is a point into an object of the type
IlvMapMarker. The library also provides a
global default renderer of the type IlvDefaultFeatureRenderer, which you can use
to translate any map feature whose geometry is one of the
predefined geometries. This renderer is in the
ilog.views.maps
package.
The following code example shows how to transform a map feature
whose geometry is of the type
IlvMapLineString
into green polylines with a thickness of four pixels if the scale
is greater than 1/1,000,000. These polylines could be, for example,
the segments of a country’s border.
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()); }
The complete source code of this example can
be found in the following file: