Every map component contains a number of layers, which are placed one on top of the other. How these layers are ordered determines which information is visible and which information is not. Information that is hidden underneath another layer will not be visible.
To determine the optimal order of these layers and show the most relevant information, Lucy must know the characteristics of these layers. Layers can contain different kinds of content, or may need to be updated more or less frequently.
For instance, layers that represent real-time data, such as moving airplanes, need to be updated very frequently, while satellite imagery usually remains static. Re-drawing all the layers when only the real-time layer has changed, could have a big impact on performance, even to the point where the application becomes too slow.
A similar problem arises when layers with distinct content types are mixed, for instance a layer with a background satellite image and a layer containing points. It would be inconvenient if the layer with points were placed underneath the raster layer, because none of the points would be visible.
To prevent those types of problems, Lucy uses a specific algorithm to determine the order in which the layers should be inserted
This algorithm uses the type of each layer and the type of its model,
which are determined by
ILcyGXYLayerTypeProvider instances and
You can make Lucy aware of the characteristics of a layer by implementing these interfaces to return the right information
for the right layer,
and adding these implementations to the Lucy back-end.
The following sections explain what information each interface provides, how to implement each of these interfaces to work correctly within Lucy, and how to add your implementations to the Lucy back-end.
Model content types
ILcyModelContentTypeProvider defines what sort of content is contained within a model. The following model content types, defined in
ILcyModelContentType, are allowed:
ILcyModelContentType.FILLED_AREAfor models with only filled areas in it.
ILcyModelContentType.RASTERfor models with raster data.
ILcyModelContentType.MIXEDfor models with different types of objects in it.
ILcyModelContentType.POLYGONfor models with only polygons.
ILcyModelContentType.POLYLINEfor models with only polylines.
ILcyModelContentType.POINTfor models with only points.
ILcyModelContentType.TEXTfor models with only text data.
ILcyModelContentType.GRIDfor models that contain a grid.
ILcyModelContentType.UNKNOWNfor models for which the content type is not known.
To make a specific implementation of
ILcyModelContentTypeProvider, you must implement only the method
getModelContentType( ILcdModel aModel ). This method returns the appropriate
ILcyModelContentType if the provider is able to find one for the given model. Otherwise,
ILcyModelContentType.UNKNOWN must be returned. This means that this
ILcyModelContentTypeProvider is not able to return an appropriate type. By default, Lucy tries the registered providers one by one until a known type
is returned. You can add your implementation of
ILcyModelContentTypeProvider to the back-end with the method
ILcyGXYLayerType defines the following layer types:
ILcyGXYLayerType.BACKGROUNDfor layers that serve as background data, and do not need editing.
ILcyGXYLayerType.EDITABLEfor editable layers.
ILcyGXYLayerType.REALTIMEfor layers with real-time data, which will be updated frequently.
ILcyGXYLayerType.UNKNOWNfor layers for which the type is not known.
Making an implementation of
ILcyGXYLayerTypeProvider is equivalent to making an implementation of
ILcyModelContentTypeProvider: you must implement only the method
getGXYLayerType( ILcdGXYLayer aGXYLayer ). This method must return the appropriate
ILcyGXYLayerType if the provider is able to find one for the given model, or
ILcyGXYLayerType.UNKNOWN otherwise. As with
ILcyModelContentTypeProvider instances, Lucy will try all registered providers one by one until a known type is returned. You can add your implementation
ILcyGXYLayerTypeProvider to the back-end with the method