Class PositionStyle
This abstract class encapsulates the labeling position logic. It is inherited by other styles, such as the TextSytle.
public abstract class PositionStyle : Style
- Inheritance
-
PositionStyle
- Derived
- Inherited Members
Remarks
This abstract class is meant to be inherited by other classes and specialized to meet the needs of various labelers.
Constructors
PositionStyle()
This is the default constructor for the class.
protected PositionStyle()
Remarks
None
Properties
AbbreviationDictionary
public Dictionary<string, string> AbbreviationDictionary { get; set; }
Property Value
Alignment
Controls the horizontal alignment of multi-line text content. This property has no effect on single-line text.
protected DrawingTextAlignment Alignment { get; set; }
Property Value
AllowLabelNudging
public bool AllowLabelNudging { get; set; }
Property Value
AllowLineCarriage
This property gets and sets whether the labeler will allow carriage returns to be inserted.
public bool AllowLineCarriage { get; set; }
Property Value
- bool
This property gets whether the labeler will allow carriage returns to be inserted.
Remarks
This property enables the labeler to split long labels into multiple lines if need be. For instance, if you have a lake whose name is "Southern Homestead Lake," then the labeler may try and break the name onto multiple lines in order to better label the feature.
AllowSpline
This property gets and sets whether line labels are allowed to spline around curved lines.
protected bool AllowSpline { get; set; }
Property Value
- bool
This property gets whether line labels are allowed to spline around curved lines.
Remarks
This property will allow the labeler to spline the label around curved lines. This is useful for curved streets that need to be labeled. This can have a considerable performance impact, so we suggest you experiment with it to ensure it can meet your needs.
BasePoint
protected PointStyle BasePoint { get; set; }
Property Value
BestPlacementSymbolHeight
public float BestPlacementSymbolHeight { get; set; }
Property Value
BestPlacementSymbolWidth
public float BestPlacementSymbolWidth { get; set; }
Property Value
CustomTextStyles
This property returns a collection of area styles, allowing you to stack multiple area styles on top of each other.
protected Collection<TextStyle> CustomTextStyles { get; }
Property Value
- Collection<TextStyle>
This property returns a collection of area styles.
Remarks
Using this collection you can stack multiple area styles on top of each other. When we draw the feature we will draw them in order in the collection. You can use these stacks to create drop shadow effects along with multiple colored outlines etc.
DateFormat
This property gets and sets the format that will be applied to the text which can be parsed to DateTime type.
protected string DateFormat { get; set; }
Property Value
- string
This property gets the format that will be applied to the text which can be parsed to DateTime type..
Remarks
With this property, you can apply formats to the text that is retrieved from the feature.
DrawingLevel
Gets or sets the DrawingLavel for this style.
protected DrawingLevel DrawingLevel { get; set; }
Property Value
DuplicateRule
This property gets and sets the rule that determines how duplicate labels are handled.
public LabelDuplicateRule DuplicateRule { get; set; }
Property Value
- LabelDuplicateRule
This property gets the rule that determines how duplicate labels are handled.
Remarks
There are three ways to handle duplicate label names. The first is to suppress all duplicates, which means if there are two street segments with the same name then only one will be drawn. The second way is to suppress duplicate labels only if they are in one quarter of the screen. In this way, the screen will be divided into four quadrants, and if the two duplicate labels are in different quadrants, then they will both draw. The last way is to draw all duplicates.
FittingLineInScreen
This property gets and sets whether the labeler will try to fit the label as best as it can on the visible part of a line on the screen.
protected bool FittingLineInScreen { get; set; }
Property Value
- bool
This property gets whether the labeler will try to fit the label as best as it can on the visible part of a line on the screen.
Remarks
A label will normally be displayed in the center of a line. If only a small piece of the line is visible on the screen, we cannot see it's label by default. If we set this property to ture though, the label will be displayed in the center of that piece in screen.
FittingPolygon
This property gets and sets whether the labeler will try to fit the label as best as it can within the boundary of a polygon.
public bool FittingPolygon { get; set; }
Property Value
- bool
This property gets whether the labeler will try to fit the label as best as it can within the boundary of a polygon.
Remarks
None
FittingPolygonFactor
This property gets and sets the factor to which it will keep the label inside of the polygon.
public double FittingPolygonFactor { get; set; }
Property Value
- double
This property gets the factor to which it will keep the label inside of the polygon.
Remarks
None
FittingPolygonInScreen
This property gets and sets whether the labeler will try to fit the label as best as it can on the visible part of a polygon on the screen.
protected bool FittingPolygonInScreen { get; set; }
Property Value
- bool
This property gets whether the labeler will try to fit the label as best as it can on the visible part of a polygon on the screen.
Remarks
A label will normally be displayed in the center of a polygon. If only a small piece of the polygon is visible on the screen, we cannot see it's label by default. If we set this property to ture though, the label will be displayed in the center of that piece in screen.
Font
This property gets and sets the font that will be used to draw the text.
protected GeoFont Font { get; set; }
Property Value
- GeoFont
This property gets the font that will be used to draw the text.
Remarks
None
ForceHorizontalLabelForLine
This property gets and sets whether we should force horizontal labeling for lines.
protected bool ForceHorizontalLabelForLine { get; set; }
Property Value
- bool
This property gets whether we should force horizontal labeling for lines.
Remarks
Normally, lines are labeled in the direction of the line. There may be some cases, however, when you want to have the line labeled horizontally regardless of the line's direction. In such a case, you can set this property to force the lines to be labeled horizontally.
ForceLineCarriage
This property gets and sets whether the labeler will force carriage returns to be inserted.
public bool ForceLineCarriage { get; set; }
Property Value
- bool
This property gets whether the labeler will force carriage returns to be inserted.
Remarks
This property forces the labeler to split long labels into multiple lines. For instance, if you have a lake whose name is "Southern Homestead Lake," then the labeler will break the name onto multiple lines in order to better label the feature.
GridSize
This property gets and sets the grid size used for deterministic labeling.
public int GridSize { get; set; }
Property Value
- int
This property gets the grid sized used for deterministic labeling.
Remarks
The grid size determines how many labels will be considered as candidates for drawing. The smaller the grid size, the higher the density of candidates. Making the grid size too small may have a performance impact.
HaloPen
This property gets and sets the halo pen you may use to draw a halo around the text.
protected GeoPen HaloPen { get; set; }
Property Value
- GeoPen
This property gets the halo pen you may use to draw a halo around the text.
Remarks
The halo pen allows you to draw a halo effect around the text, making it stand out more on a busy background.
LabelAllLineParts
This property gets and sets whether the labeler will label every part of a multi-part line.
public bool LabelAllLineParts { get; set; }
Property Value
- bool
This property gets whether the labeler will label every part of a multi-part line.
Remarks
In some cases, you may want to label all of the parts of a multi-part line, while in other cases you may not.
LabelAllPolygonParts
This property gets and sets whether the labeler will label every part of a multi-part polygon.
public bool LabelAllPolygonParts { get; set; }
Property Value
- bool
This property gets whether the labeler will label every part of a multi-part polygon.
Remarks
In some cases, you may want to label all of the parts of a multi-part polygon, while in other cases you may not. For example, you may have a series of lakes where you do want to label each polygon. In another case, you may have a country with many small islands and in this case you only want to label the largest polygon.
LabelPositions
Gets a value represents a keyValuepair which is a feature id and label position of the feature
protected Dictionary<string, WorldLabelingCandidate> LabelPositions { get; }
Property Value
LeaderLineMinimumLengthInPixels
public float LeaderLineMinimumLengthInPixels { get; set; }
Property Value
LeaderLineRule
public LabelLeaderLinesRule LeaderLineRule { get; set; }
Property Value
LeaderLineStyle
public LineStyle LeaderLineStyle { get; set; }
Property Value
LetterCase
protected DrawingTextLetterCase LetterCase { get; set; }
Property Value
Mask
This property gets and sets the AreaStyle used to draw a mask behind the text.
protected AreaStyle Mask { get; set; }
Property Value
- AreaStyle
This property gets the AreaStyle used to draw a mask behind the text.
Remarks
A mask is a plate behind the text that is rectangular and slightly larger than the width and height of the text. It allows the label to stand out well on a busy background. You can also try the HaloPen property instead of the mask, if the mask effect is too pronounced.
MaskMargin
This property gets and sets the margin around the text that will be used for the mask.
protected DrawingMargin MaskMargin { get; set; }
Property Value
- DrawingMargin
This property gets the margin around the text that will be used for the mask.
Remarks
This determines how much larger the mask is than the text, in pixels.
MaskType
public MaskType MaskType { get; set; }
Property Value
MaxAdjacentCharDeltaAngle
public double MaxAdjacentCharDeltaAngle { get; set; }
Property Value
MaxCharAngleDelta
protected double MaxCharAngleDelta { get; set; }
Property Value
MaxNudgingInPixel
public int MaxNudgingInPixel { get; set; }
Property Value
MinDistance
protected double MinDistance { get; set; }
Property Value
NudgingIntervalInPixel
public float NudgingIntervalInPixel { get; set; }
Property Value
NumericFormat
This property gets and sets the format that will be applied to the text which can be parsed to double type.
protected string NumericFormat { get; set; }
Property Value
- string
This property gets the format that will be applied to the text which can be parsed to double type..
Remarks
With this property, you can apply formats to the text that is retrieved from the feature.
OverlappingRule
This property gets and sets the rule that determines how overlapping labels are handled.
public LabelOverlappingRule OverlappingRule { get; set; }
Property Value
- LabelOverlappingRule
This property gets the rule that determines overlapping labels are handled.
Remarks
This defines the rules for label overlapping. Currently, either we allow overlapping or we do not. In the future, we may extend this to allow some percentage of partial overlapping.
PolygonLabelingLocationMode
This property gets and sets the mode that determines how to locate polygon's labeling
public PolygonLabelingLocationMode PolygonLabelingLocationMode { get; set; }
Property Value
- PolygonLabelingLocationMode
This property gets the mode that determines how to locate polygon's labeling
Remarks
There are two ways to handle polygon's labeling location. The first is to use polygon's centroid as the labeling location, the second way is to use polygon's boungdingbox center as the labeling location.
RotationAngle
This property gets and sets the rotation angle of the item being positioned.
protected double RotationAngle { get; set; }
Property Value
- double
This property gets the rotation angle of the item being positioned.
Remarks
None
Spacing
protected double Spacing { get; set; }
Property Value
SplineType
Gets or sets the SplineType for labeling.
protected SplineType SplineType { get; set; }
Property Value
SuppressPartialLabels
This property gets and sets whether a partial label in the current extent will be drawn or not.
public bool SuppressPartialLabels { get; set; }
Property Value
Remarks
This property provides a solution to the "cut off" label issue in Map Suite Web Edition and Desktop Edition, which occurs when multiple tiles exist. When you set this property to true, any labels outside of the current extent will not be drawn.
TextBrush
This property gets and sets the SolidBrush that will be used to draw the text.
protected GeoBrush TextBrush { get; set; }
Property Value
- GeoBrush
This property gets the SolidBrush that will be used to draw the text.
Remarks
You can use this property to draw a solid color; however, if you need to use other brushes, you can access them through the Advanced property of this class.
TextColumnName
This property gets and sets the column name in the data that you want to get the text from.
protected string TextColumnName { get; set; }
Property Value
- string
This property gets the column name in the data that you want to get the text from.
Remarks
This property is used when retrieving text from a feature. You will want to specify the name of the column that contains the text you want to draw.
TextContent
This property gives you the option to customize the labeling by using one or more columns.
For example supposing I have 2 columns "ColumnA" and "ColumnB" with the values of "ValueA" and "ValueB",
by setting this property to "{ColumnA} - {ColumnB}", it will draw "ValueA - ValueB" for the corresponding feature.
Do remember to add the columns you want to draw (ColumnA and ColumnB in the case above) to RequiredColumnNames collection;
public string TextContent { get; set; }
Property Value
TextFormat
This property gets and sets the format that will be applied to the text.
protected string TextFormat { get; set; }
Property Value
- string
This property gets the format that will be applied to the text.
Remarks
With this property, you can apply formats to the text that is retrieved from the feature.
TextLineSegmentRatio
This property gets and sets the ratio required for the label length to match the line length.
public double TextLineSegmentRatio { get; set; }
Property Value
- double
This property gets the ratio required for the label length to match the line length.
Remarks
This allows you to suppress labels where the label length would greatly exceed the line length. For example, if you set the ratio to 1, then the label will be suppressed if it is longer than the line. If the ratio is lower, then the label would need to be shorter than the line. If higher, then the label is allowed to run past the length of the line. This allows you to control the look of things like road labeling.
TextPlacement
This property gets and sets the location of the label for point features relative to the point.
public TextPlacement TextPlacement { get; set; }
Property Value
- TextPlacement
This property gets the location of the label for point features relative to the point.
Remarks
This property allows you to choose where the labels are created relative to the point. For example, you can set the property to RightCenter, which would ensure that all labels are placed to the right of and vertically centered with the point. Different kinds of point layers can be positioned differently. If the point layer is dense and position is not a main concern, then you can try the BestPlacement property. That property overrides this property and tries to fit the label in the best location so that the minimum number of labels are suppressed due to overlapping issues.
WrapWidth
protected double WrapWidth { get; set; }
Property Value
XOffsetInPixel
This property gets and sets the X pixel offset used for drawing each feature.
protected float XOffsetInPixel { get; set; }
Property Value
- float
This property gets the X pixel offset used for drawing each feature.
Remarks
This property allows you to specify an X offset. When combined with a Y offset, it is useful to allow you to achieve effects such as drop shadows, etc. There also may be times when you need to modify the location of feature data so as to better align it with raster satellite data.
YOffsetInPixel
This property gets and sets the Y pixel offset used for drawing each feature.
protected float YOffsetInPixel { get; set; }
Property Value
- float
This property gets the Y pixel offset used for drawing each feature.
Remarks
This property allows you to specify a Y offset. When combined with an X offset, it is useful to allow you to achieve effects such as drop shadows, etc. There also may be times when you need to modify the location of feature data so as to better align it with raster satellite data.
Methods
AbbreviateText(Feature, GeoCanvas)
protected void AbbreviateText(Feature feature, GeoCanvas canvas)
Parameters
AbbreviateTextCore(Feature, GeoCanvas)
protected virtual void AbbreviateTextCore(Feature feature, GeoCanvas canvas)
Parameters
CheckDuplicate(LabelingCandidate, GeoCanvas, Collection<SimpleCandidate>, Collection<SimpleCandidate>)
This method will determine whether the label will be suppressed because it is a duplicate.
protected bool CheckDuplicate(LabelingCandidate labelingCandidate, GeoCanvas canvas, Collection<SimpleCandidate> labelsInThisLayer, Collection<SimpleCandidate> labelsInAllLayers)
Parameters
labelingCandidate
LabelingCandidateThis parameter is the labeling candidate that will be checked to determine if it is a duplicate.
canvas
GeoCanvasThis parameter is the view used for calculations.
labelsInThisLayer
Collection<SimpleCandidate>The labels will be drawn in the current layer only.
labelsInAllLayers
Collection<SimpleCandidate>The labels will be drawn in all layers.
Returns
- bool
This method returns whether the label will be suppressed as a duplicate.
Remarks
This method is the concrete wrapper for the abstract method
CheckDuplicateCore. This method will determine if the label will be suppressed
because it is a duplicate. It also takes into consideration the duplicate rules
for the class. So, for example, if we set to allow duplicates, then the method will
always return false. If the class is set to not allow duplicates and this label is
a duplicate, then it will return true and be suppressed.
As this is a concrete public method that wraps a Core method, we reserve the right
to add events and other logic to pre- or post-process data returned by the Core version
of the method. In this way, we leave our framework open on our end, but also allow you
the developer to extend our logic to suit your needs. If you have questions about this,
please contact our support team as we would be happy to work with you on extending our
framework.
CheckDuplicateCore(LabelingCandidate, GeoCanvas, Collection<SimpleCandidate>, Collection<SimpleCandidate>)
This method will determine if the label will be suppressed because it is a duplicate.
protected virtual bool CheckDuplicateCore(LabelingCandidate labelingCandidate, GeoCanvas canvas, Collection<SimpleCandidate> labelsInThisLayer, Collection<SimpleCandidate> labelsInAllLayers)
Parameters
labelingCandidate
LabelingCandidateThis parameter is the labeling candidate that will be checked to determine if it is a duplicate.
canvas
GeoCanvasThis parameter is the view that will be used for calculations.
labelsInThisLayer
Collection<SimpleCandidate>The labels will be drawn in the current layer only.
labelsInAllLayers
Collection<SimpleCandidate>The labels will be drawn in all layers.
Returns
- bool
This method returns whether the label will be suppressed as a duplicate.
Remarks
This overridden method is called from the concrete public method CheckDuplicate. This method will determine if the label will be suppressed because it is a duplicate. It also takes into consideration the duplicate rules for the class. So, for example, if we set to allow duplicates, then the method will always return false. If the class is set to not allow duplicates and this label is a duplicate, then it will return true and be suppressed.
CheckOverlapping(LabelingCandidate, GeoCanvas, GeoFont, float, float, double, Collection<SimpleCandidate>, Collection<SimpleCandidate>)
This method will determine if the label will be suppressed because of overlapping.
protected bool CheckOverlapping(LabelingCandidate labelingCandidate, GeoCanvas canvas, GeoFont font, float xOffsetInPixel, float yOffsetInPixel, double rotationAngle, Collection<SimpleCandidate> labelsInThisLayer, Collection<SimpleCandidate> labelsInAllLayers)
Parameters
labelingCandidate
LabelingCandidateThis parameter is the labeling candidate that will be checked to determine if it is overlapping.
canvas
GeoCanvasThis parameter is the view that will be used for calculations.
font
GeoFontxOffsetInPixel
floatyOffsetInPixel
floatrotationAngle
doublelabelsInThisLayer
Collection<SimpleCandidate>The labels will be drawn in the current layer only.
labelsInAllLayers
Collection<SimpleCandidate>The labels will be drawn in all layers.
Returns
- bool
This method returns whether the label will be suppressed because of overlapping.
Remarks
This method is the concrete wrapper for the abstract method
CheckOverlappingCore. This method will determine if the label will be suppressed
because it is overlapping another label. It also takes into consideration the
overlapping rules for the class. So, for example, if we set to allow overlap, then the
method will always return false. If the class is set to not allow overlap and
this label is overlapping, then it will return true and be suppressed.
As this is a concrete public method that wraps a Core method, we reserve the right
to add events and other logic to pre- or post-process data returned by the Core version
of the method. In this way, we leave our framework open on our end, but also allow you
the developer to extend our logic to suit your needs. If you have questions about this,
please contact our support team as we would be happy to work with you on extending our
framework.
CheckOverlappingCore(LabelingCandidate, GeoCanvas, Collection<SimpleCandidate>, Collection<SimpleCandidate>)
This method will determine whether the label will be suppressed because of overlapping.
protected virtual bool CheckOverlappingCore(LabelingCandidate labelingCandidate, GeoCanvas canvas, Collection<SimpleCandidate> labelsInThisLayer, Collection<SimpleCandidate> labelsInAllLayers)
Parameters
labelingCandidate
LabelingCandidateThis parameter is the labeling candidate that will be checked to determine if it is overlapping.
canvas
GeoCanvasThis parameter is the view that will be used for calculations.
labelsInThisLayer
Collection<SimpleCandidate>The labels will be drawn in the current layer only.
labelsInAllLayers
Collection<SimpleCandidate>The labels will be drawn in all layers.
Returns
- bool
This method returns whether the label will be suppressed because of overlapping.
Remarks
This overridden method is called from the concrete public method CheckOverlapping. This method will determine if the label will be suppressed because it is overlapping another label. It also takes into consideration the overlapping rules for the class. So, for example, if we set to allow overlap, then the method will always return false. If the class is set to not allow overlap and this label is overlapping, then it will return true and be suppressed.
ConvertToScreenShape(Feature, GeoCanvas)
This method converts a feature in world coordinates to screen coordinates.
protected static BaseShape ConvertToScreenShape(Feature feature, GeoCanvas canvas)
Parameters
feature
FeatureThis parameter is the feature to be converted from world coordinates.
canvas
GeoCanvasThis parameter is the view that will be used to convert the world coordinate feature to a screen coorindate feature.
Returns
- BaseShape
A screen coordinate shape.
Remarks
This overridden method can be called by this class and its sub concrete classes. In this method, we take the view and the feature in world coordinates and convert it to screen coordinates.
DrawCore(IEnumerable<Feature>, GeoCanvas, Collection<SimpleCandidate>, Collection<SimpleCandidate>)
This method draws the features on the view you provided.
protected override void DrawCore(IEnumerable<Feature> features, GeoCanvas canvas, Collection<SimpleCandidate> labelsInThisLayer, Collection<SimpleCandidate> labelsInAllLayers)
Parameters
features
IEnumerable<Feature>This parameter represents the features you want to draw on the view.
canvas
GeoCanvasThis parameter represents the view you want to draw the features on.
labelsInThisLayer
Collection<SimpleCandidate>The labels will be drawn in the current layer only.
labelsInAllLayers
Collection<SimpleCandidate>The labels will be drawn in all layers.
Remarks
This overridden method is called from the concrete public method Draw. In this
method, we take the features you passed in and draw them on the view you provided.
Each style (based on its properties) may draw each feature differently.
When overriding this method, consider each feature and its column data values. You can
use the full power of the GeoCanvas to do the drawing. If you need column data for a
feature, be sure to override the GetRequiredColumnNamesCore and add the columns you need
to the collection. In many of the styles, we add properties to allow the user to specify
which field they need; then, in the GetRequiredColumnNamesCore, we read that property and
add it to the collection.
Exceptions
- InvalidOperationException
In the event you attempt to call this method when the GeoCanvas's IsDrawing mode is false, it will throw an InvalidOperationException.
- ArgumentNullException
If you pass a null as the view, we will throw an ArgumentNullException.
- ArgumentNullException
If you pass a null as the features, we will throw an ArgumentNullException.
DrawMask(LabelingCandidate, GeoCanvas, Collection<SimpleCandidate>, Collection<SimpleCandidate>)
protected void DrawMask(LabelingCandidate labelingCandidate, GeoCanvas canvas, Collection<SimpleCandidate> labelsInThisLayer, Collection<SimpleCandidate> labelsInAllLayers)
Parameters
labelingCandidate
LabelingCandidatecanvas
GeoCanvaslabelsInThisLayer
Collection<SimpleCandidate>labelsInAllLayers
Collection<SimpleCandidate>
FilterFeatures(IEnumerable<Feature>, GeoCanvas)
This method filters the features based on the grid size to facilitate deterministic labeling.
protected Collection<Feature> FilterFeatures(IEnumerable<Feature> features, GeoCanvas canvas)
Parameters
features
IEnumerable<Feature>This parameter represents the features that will be filtered.
canvas
GeoCanvasThis parameter is the view that will be used for calculating font sizes.
Returns
- Collection<Feature>
This method returns the features that will be considered for labeling.
Remarks
This method is the concrete wrapper for the abstract method
FilterFeaturesCore. In this method, we filter the features based on the grid size to
facilitate deterministic labeling.
As this is a concrete public method that wraps a Core method, we reserve the right
to add events and other logic to pre- or post-process data returned by the Core version
of the method. In this way, we leave our framework open on our end, but also allow you
the developer to extend our logic to suit your needs. If you have questions about this,
please contact our support team as we would be happy to work with you on extending our
framework.
FilterFeaturesCore(IEnumerable<Feature>, GeoCanvas)
This method filters the features based on the grid size to facilitate deterministic labeling.
protected virtual Collection<Feature> FilterFeaturesCore(IEnumerable<Feature> features, GeoCanvas canvas)
Parameters
features
IEnumerable<Feature>This parameter represents the features that will be filtered.
canvas
GeoCanvasThis parameter is the view that will be used for calculating font sizes.
Returns
- Collection<Feature>
This method returns the features that will be considered for labeling.
Remarks
This overridden method is called from the concrete public method FilterFeatures. In this method, we filter the features based on the grid size to facilitate deterministic labeling.
Format(string, BaseShape)
protected string Format(string text, BaseShape labeledShape)
Parameters
Returns
FormatCore(string, BaseShape)
protected virtual string FormatCore(string text, BaseShape labeledShape)
Parameters
Returns
GetLabelingCandidateCore(Feature, GeoCanvas, GeoFont, float, float, double)
This method determines whether the specified feature is a good candidate to be labeled, based on the labeling properties set.
protected virtual Collection<LabelingCandidate> GetLabelingCandidateCore(Feature feature, GeoCanvas canvas, GeoFont font, float xOffsetInPixel, float yOffsetInPixel, double rotationAngle)
Parameters
feature
FeatureThis parameter is the feature that will be considered as a labeling candidate.
canvas
GeoCanvasThis parameter is the view that will be used to draw the feature. This method will not draw on this view, but rather will use it to determine font size, etc.
font
GeoFontxOffsetInPixel
floatyOffsetInPixel
floatrotationAngle
double
Returns
- Collection<LabelingCandidate>
A collection of labeling candidates.
Remarks
This overridden method is called from the concrete public method GetLabelingCanidate. In this method, we take the feature you passed in and determine if it is a candidate for labeling. If it is, then we will add it to the return collection. The algorithm to determine whether the label will draw is complex and determined by a number of properties and factors.
GetLabelingCandidates(Feature, GeoCanvas, GeoFont, float, float, double)
This method determines whether the specified feature is a good candidate to be labeled, based on the labeling properties set.
protected Collection<LabelingCandidate> GetLabelingCandidates(Feature feature, GeoCanvas canvas, GeoFont font, float xOffsetInPixel, float yOffsetInPixel, double rotationAngle)
Parameters
feature
FeatureThis parameter is the feature that will be considered as a labeling candidate.
canvas
GeoCanvasThis parameter is the view that will be used to draw the feature. This method will not draw on this view, but rather will use it to determine font size, etc.
font
GeoFontxOffsetInPixel
floatyOffsetInPixel
floatrotationAngle
double
Returns
- Collection<LabelingCandidate>
A collection of labeling candidates.
Remarks
This method is the concrete wrapper for the abstract method
GetLabelingCanidatesCore. This method determines if the feature passed in is a good
candidate to be labeled based on the labeling properties set.
As this is a concrete public method that wraps a Core method, we reserve the right
to add events and other logic to pre- or post-process data returned by the Core version
of the method. In this way, we leave our framework open on our end, but also allow you
the developer to extend our logic to suit your needs. If you have questions about this,
please contact our support team as we would be happy to work with you on extending our
framework.
GetRequiredColumnNamesCore()
This method returns the column data for each feature that is required for the style to properly draw.
protected override Collection<string> GetRequiredColumnNamesCore()
Returns
- Collection<string>
This method returns a collection of the column names that it needs.
Remarks
This abstract method is called from the concrete public method
GetRequiredFieldNames. In this method, we return the column names that are required for
the style to draw the feature properly. For example, if you have a style that colors
areas blue when a certain column value is over 100, then you need to be sure you include
that column name. This will ensure that the column data is returned to you in the
feature when it is ready to draw.
In many of the styles, we add properties to allow the user to specify which field they
need; then, in the GetRequiredColumnNamesCore, we read that property and add it to the
collection.
Exceptions
- ArgumentNullException
If columnName is null, we will throw an ArgumentNullException.
OnFormatted(FormattedPositionStyleEventArgs)
protected virtual void OnFormatted(FormattedPositionStyleEventArgs e)
Parameters
OnFormatting(FormattingPositionStyleEventArgs)
protected virtual void OnFormatting(FormattingPositionStyleEventArgs e)
Parameters
WrapText(string, GeoFont, GeoCanvas)
public string WrapText(string text, GeoFont font, GeoCanvas canvas)
Parameters
Returns
Events
Formatted
public event EventHandler<FormattedPositionStyleEventArgs> Formatted
Event Type
Formatting
public event EventHandler<FormattingPositionStyleEventArgs> Formatting