Provides access to the Map Server Legend Info Interface.
Product Availability
When To Use
Use IMapServerLegendInfo to retrieve individual legend elements including the symbol image, labels, descriptions and headings. A common use would be to populate a table of contents. To export a single image of the legend use ExportLegend on IMapServerLayout.
Members
Description | ||
---|---|---|
LayerID | The layer ID. | |
LayerName | The layer name. | |
LegendGroups | A collection of legend group objects. |
CoClasses that implement IMapServerLegendInfo
CoClasses and Classes | Description |
---|---|
MapServerLegendInfo | The Map Server Legend Info coclass provides legend information for a layer. |
Remarks
MapServerLegendInfo objects are the result of a GetLegendInfo method on IMapServer. Legends are associated with renderers that belong to each layer in a map. Each layer has a separate renderer. Each renderer has one or more legend groups. Each legend group has one or more legend classes.
MapServerLegendInfo doesn't contain information about whether the data frame and the layers in the TOC are expanded or collapsed in the original map document. You have to write your own code to find this out.
The following sample code shows how to determine whether the data frame and the layers in the TOC are expanded or collapsed in the original map document. The sample assumes that you already have a valid MapServer object.
IMapServer mapServer;
IMapServerObjects mapServerObjects;
IMapLayerInfos mapLayerInfos;
IMap map;
ILayer layer;
IGroupLayer groupLayer;
ICompositeLayer2 compLayer;
ILegendInfo legendInfo;
string strMapName;
int i, j, k;
Boolean bVisible;
string debugOutput;
// Step through data frames
for (i = 0; i < mapServer.MapCount; i++)
{
// Get map name
strMapName = mapServer.get_MapName(i);
// Get map
mapServerObjects = (IMapServerObjects)mapServer;
map = mapServerObjects.get_Map(strMapName);
// Print whether map (data frame) is expanded or collapsed
debugOutput = "Map " + i.ToString() + " (" + strMapName + "): " + (map.Expanded ? "Expanded" : "Collapsed");
MessageBox.Show(debugOutput);
// Get MapLayerInfos
mapLayerInfos = mapServer.GetServerInfo(strMapName).MapLayerInfos;
// Step through layers
for (j = 0; j < mapLayerInfos.Count; j++)
{
// Get layer
layer = mapServerObjects.get_Layer(strMapName, j);
// Check if group layer
if (layer is IGroupLayer)
{
groupLayer = (IGroupLayer)layer;
debugOutput = "Layer " + j.ToString() + " (" + layer.Name + "): " + (groupLayer.Expanded ? "Expanded" : "Collapsed");
MessageBox.Show(debugOutput);
}
// Check if composite layer
else if (layer is ICompositeLayer2)
{
compLayer = (ICompositeLayer2)layer;
debugOutput = "Layer " + j.ToString() + " (" + layer.Name + "): " + (compLayer.Expanded ? "Expanded" : "Collapsed");
MessageBox.Show(debugOutput);
}
else if (layer is ILegendInfo)
{
legendInfo = (ILegendInfo)layer;
// If at least 1 legend group is visible, layer is expanded
bVisible = false;
for (k = 0; k < legendInfo.LegendGroupCount; k++)
{
if (legendInfo.get_LegendGroup(k).Visible)
{
bVisible = true;
break;
}
}
debugOutput = "Layer " + j.ToString() + " (" + layer.Name + "): " + (bVisible ? "Expanded" : "Collapsed");
MessageBox.Show(debugOutput);
}
else
{
// All other layers that cannot be expanded or collapsed
// -> set them to "expanded"
debugOutput = "Layer " + j.ToString() + " (" + layer.Name + "): " + "Expanded";
MessageBox.Show(debugOutput);
}
}
}