Iterating styles: examining all styles defined in a layer
This page describes how to use the MaestroAPI from the MapGuide Maestro project in your own application.
The code below can be used as a template for iterating all style items in a LayerDefintion?.
The example sets labels on all styles that have a feature label to be "My custom label"
(C#)
ServerConnectionI con; //See other samples on how to get this
LayerDefinition ldef = con.GetLayerDefinition("Library://myLayer.LayerDefinition");
VectorLayerDefinitionType vldef = ldef.Item as VectorLayerDefinitionType; //vldef becomes null, if it is not a vector layer
foreach (VectorScaleRangeType vsr in vldef.VectorScaleRange)
{
//The objects have no common base type, so we iterate in an untyped manner
foreach (object o in vsr.Items)
{
if (o is PointTypeStyleType)
{
PointTypeStyleType pst = o as PointTypeStyleType;
if (pst.PointRule != null)
foreach (PointRuleType pr in pst.PointRule)
{
if (pr.Label != null)
pr.Label.Text = "My custom label";
}
}
else if (o is LineTypeStyleType)
{
LineTypeStyleType lst = o as LineTypeStyleType;
if (lst.LineRule != null)
foreach (LineRuleType lr in lst.LineRule)
{
if (lr.Label != null)
lr.Label.Text = "My custom label";
}
}
else if (o is AreaTypeStyleType)
{
AreaTypeStyleType ast = o as AreaTypeStyleType;
if (ast.AreaRule != null)
foreach (AreaRuleType ar in ast.AreaRule)
{
if (ar.Label != null)
ar.Label.Text = "My custom label";
}
}
}
}
