Overview of Renderers
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 abstract class. To transform a given map feature into a graphic object, you use its
makeGraphic method:
IlvGraphic* makeGraphic(const IlvMapFeature& feature,
const IlvMapInfo& targetMapInfo,
IlvMapsError& status);
The second argument,
targetMapInfo, allows you to specify a target projection and an adapter. An adapter is a converter that provides facilities to convert geographic coordinates (that are generally expressed with floating point values in a coordinate system where the vertical axis is oriented upwards) into the points used by an
IlvManager which are expressed with integer values in a coordinate system where the vertical axis is oriented downwards.
If the projection of the
IlvMapInfo is set to 0 or is an instance of
IlvUnknownProjection, the target projection is considered to be the same as the source projection of the
IlvMapFeature. In this case, no projection conversion is performed.
For information about projections and adapters, see
Selecting a Target Projection and
Map Projections.
Views Maps includes a set of default renderers for each of the geometry types available in the library. These renderers can be found in the package
rendering. The
IlvDefaultPointRenderer, for example, transforms a map feature whose geometry is a point into an object of the type
IlvMarker. 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. You can customize some attributes of the renderers by providing a rendering style. For example, the
IlvMapLineRenderingStyle is used to customize line width, color or line style.
The following code sample shows how to transform a map feature whose geometry is of the type
IlvMapCurve into a green curve. These polylines could be, for example, the segments of a country’s border.
IlvFeatureRenderer* renderer = new IlvDefaultCurveRenderer(_display); IlvMapLineRenderingStyle *lrs = new IlvMapLineRenderingStyle(_display); lrs->setForeground("green"); lrs->setLineWidth(2); renderer->setLineRenderingStyle(lrs); IlvGraphic* graphic = renderer->makeGraphic(feature, mapInfo, status); if(graphic) { _manager->addObject(graphic); } else { IlvWarning("This renderer can’t translate the map feature"); if(status != IlvMaps::NoError()) IlvWarning(IlvMaps::GetErrorMessage(status, _display)); } |
Published date: 05/24/2022
Last modified date: 02/24/2022