public class TLcyWMSClientGetFeatureInfoAddOn extends ALcyFormatAddOn
This add-on allows to select and inspect the properties of objects visualized on a WMS layer. It uses GetFeatureInfo requests to do this. This add-on also adds support to visualize GetFeatureInfo responses for GXY views.
Note that in order to visualize the GetFeatureInfo responses on a Lightspeed view, the
TLcyLspWMSClientGetFeatureInfoAddOn
add-on is required
in addition to this one.
This add-on registers a format that is used to visualize GetFeatureInfo layers. By overriding the
createBaseFormat()
method, it is possible to return a custom format that for example customizes
the layer creation.
The format that is returned by default has disabled all workspace support, meaning that the GetFeatureInfo layer will not be saved to the workspace. The consequence of this is that currently visualized GetFeatureInfo responses on the map will not be visualized anymore when reloading a workspace.
To see how these GetFeatureInfo requests are performed, and how the responses are converted to layers,
see samples.wms.client.common.WMSGetFeatureInfoMouseListener
. The functionality in this add-on
is based on this sample class. When clicking on a WMS layer with the select controller, the following happens:
ILcdModel
,
and visualize it on the map. When the response contains a geometry (ALcdShape#fromDomainObject
),
the geometry will be visualized. Otherwise, a point will be visualized at the location of the request.
The visualized object will be selected as well. When the "application/json"
,
"application/vnd.ogc.gml/3.1.1"
or "application/vnd.ogc.gml"
mime type is used, a shape will
be returned by the server. In all other cases, also when using a custom mime type, an ILcdDataObject
using the DATA_TYPE
data type will be used.TLcySelectionEditorAddOn
can show the object properties
of the selected objects by looping over the available ILcyCustomizerPanelFactory
instances. Registering
your own ILcyCustomizerPanelFactory
for the GetFeatureInfo domain objects allows to customize the
object properties panel. You can use the constants in this class to recognize those domain objects, and to
retrieve the info available in the GetFeatureInfo response domain objects.Modifier and Type | Field and Description |
---|---|
static TLcdDataProperty |
CONTENT_FORMAT_PROPERTY
Property that defines the content format of the GetFeatureInfo request.
|
static TLcdDataProperty |
CONTENT_PROPERTY
Property that defines the content of the GetFeatureInfo response.
|
static TLcdDataModel |
DATA_MODEL
The data model that declares the data type that is used for the decoded GetFeatureInfo responses.
|
static TLcdDataType |
DATA_TYPE
The data type of the decoded GetFeatureInfo responses.
|
static TLcdDataProperty |
LOCATION_PROPERTY
Property that defines the location of the GetFeatureInfo request in model coordinates.
|
static TLcdDataProperty |
NAME_PROPERTY
Property that contains a name for the FeatureInfo object.
|
static TLcdDataType |
SHAPE_DATA_TYPE
The data type used for the location property.
|
Constructor and Description |
---|
TLcyWMSClientGetFeatureInfoAddOn()
Default constructor
|
Modifier and Type | Method and Description |
---|---|
protected ALcyFormat |
createBaseFormat()
Returns a new data format for this add-on.
|
protected ALcyFormat |
createFormatWrapper(ALcyFormat aBaseFormat)
Returns a new data format wrapper for this add-on.
|
void |
plugInto(ILcyLucyEnv aLucyEnv)
Creates and plugs in the add-on's format.
|
createFormatTool, getFormat, unplugFrom
createPreferencesTool, getLongPrefix, getLucyEnv, getPreferences, getPreferencesTool, getShortPrefix
getConfigSourceName, getDisplayName, setConfigSourceName, setDisplayName
public static final TLcdDataModel DATA_MODEL
application/json
, application/vnd.ogc.gml/3.1.1
or
application/vnd.ogc.gml
.public static final TLcdDataType DATA_TYPE
The data type of the decoded GetFeatureInfo responses. This type defines the following properties:
public static final TLcdDataType SHAPE_DATA_TYPE
public static final TLcdDataProperty LOCATION_PROPERTY
null
if the location is unknown. This property has SHAPE_DATA_TYPE
as type.public static final TLcdDataProperty CONTENT_FORMAT_PROPERTY
String
values.
See also ALcdWMSProxy.getFeatureInfoFormat()
and TLcdWMSGetFeatureInfoParameters.getFeatureInfoFormat()
.public static final TLcdDataProperty NAME_PROPERTY
String
values.public static final TLcdDataProperty CONTENT_PROPERTY
byte[]
values.public TLcyWMSClientGetFeatureInfoAddOn()
public void plugInto(ILcyLucyEnv aLucyEnv)
ALcyFormatAddOn
Creates and plugs in the add-on's format.
plugInto
in class ALcyFormatAddOn
aLucyEnv
- the Lucy environment to plug intoALcyAddOn.unplugFrom(com.luciad.lucy.ILcyLucyEnv)
protected ALcyFormat createBaseFormat()
ALcyFormatAddOn
Returns a new data format for this add-on. Override this method to extend the default format with new functionality.
For example, to alter the icon of the layers of this format, you can decorate the layer factory created in the format:
@Override
protected ALcyFormat createBaseFormat() {
return new ALcyFormatWrapper(super.createBaseFormat()){
@Override
protected ILcdGXYLayerFactory createGXYLayerFactory(){
final ILcdGXYLayerFactory delegate = super.createGXYLayerFactory();
return new ILcdGXYLayerFactory(){
@Override
public ILcdGXYLayer createGXYLayer(ILcdModel aModel){
ILcdGXYLayer layer = delegate.createGXYLayer(aModel);
if (layer != null){
ILcdIcon icon = ...;
layer.setIcon(icon);
}
return layer;
}
}
}
}
}
createBaseFormat
in class ALcyFormatAddOn
protected final ALcyFormat createFormatWrapper(ALcyFormat aBaseFormat)
ALcyFormatAddOn
Returns a new data format wrapper for this add-on. A format wrapper extends the base format with aspects such as asynchronous painting, mutable file behavior, safe guarding, etc.
Overriding this method of an existing add-on should be done with extreme care as add-ons typically rely on the wrappers that should be present (e.g. a safe guard).
createFormatWrapper
in class ALcyFormatAddOn
aBaseFormat
- the base format to wrapALcyFormatWrapper