Skip to content

LegacyStyleJsonTextStyle

Namespace: ThinkGeo.Core

Represents the LegacyStyleJsonTextStyle class.

public class LegacyStyleJsonTextStyle : TextStyle

Inheritance Object → Style → PositionStyle → TextStyle → LegacyStyleJsonTextStyle

Properties

BasePoint

Gets or sets the BasePoint.

public PointStyle BasePoint { get; set; }

Property Value

PointStyle

TextContent

Gets or sets the TextContent.

public string TextContent { get; set; }

Property Value

String

XOffsetInPixel

This property gets and sets the X pixel offset for drawing each feature.

public float XOffsetInPixel { get; set; }

Property Value

Single
This property gets the X pixel offset 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 for drawing each feature.

public float YOffsetInPixel { get; set; }

Property Value

Single
This property gets the Y pixel offset 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.

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.

public bool FittingLineInScreen { get; set; }

Property Value

Boolean

        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.

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.

public bool FittingPolygonInScreen { get; set; }

Property Value

Boolean

        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.

CustomTextStyles

Gets a collection of text styles that could be stacked on top of each other.

public Collection<TextStyle> CustomTextStyles { get; }

Property Value

Collection<TextStyle>
A collection of .

Remarks:

You could previously stack multiple TextStyles here (e.g. for drop shadows or outlines), but this API proved confusing. To layer multiple TextStyles, add them to ZoomLevel.CustomStyles instead.

RotationAngle

This property gets and sets the rotation angle of the item being positioned.

public double RotationAngle { get; set; }

Property Value

Double
This property gets the rotation angle of the item being positioned.

Remarks:

None

TextFormat

This property gets and sets the format that will be applied to the text.

public 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.

NumericFormat

This property gets and sets the format that will be applied to the text which can be parsed to double type.

public 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.

DateFormat

This property gets and sets the format that will be applied to the text which can be parsed to DateTime type.

public 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.

TextBrush

This property gets and sets the SolidBrush that will be used to draw the text.

public 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.

Font

This property gets and sets the font that will be used to draw the text.

public GeoFont Font { get; set; }

Property Value

GeoFont
This property gets the font that will be used to draw the text.

Remarks:

None

HaloPen

This property gets and sets the halo pen you may use to draw a halo around the text.

public GeoPen HaloPen { get; set; }

Property Value

GeoPen

        This property gets the halo pen you may use to draw a halo around the

Remarks:

The halo pen allows you to draw a halo effect around the text, making it stand out more on a busy background.

TextColumnName

This property gets and sets the column name in the data that you want to get the text from.

public 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:

You can use TextContent for combining multiple columns

Mask

This property gets and sets the AreaStyle used to draw a mask behind the text.

public 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.

public 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.

ForceHorizontalLabelForLine

This property gets and sets whether we should force horizontal labeling for lines.

public bool ForceHorizontalLabelForLine { get; set; }

Property Value

Boolean
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.

SplineType

Gets or sets the SplineType for labeling.

public SplineType SplineType { get; set; }

Property Value

SplineType

DrawingLevel

Gets or sets the DrawingLevel for this style.

public DrawingLevel DrawingLevel { get; set; }

Property Value

DrawingLevel

LabelPositions

Gets a dictionary mapping feature IDs to their custom world‐space label positions.

public Dictionary<string, WorldLabelingCandidate> LabelPositions { get; }

Property Value

Dictionary<String, WorldLabelingCandidate>

Remarks:

This property is being removed in v15.0. If you need to customize label placement per feature, please subclass your style and override GetLabelingCandidateCore(Feature, GeoCanvas, GeoFont, float, float, double)/> to inject your own WorldLabelingCandidate logic instead of using this dictionary.

Alignment

Controls the horizontal alignment of multi-line text content. This property has no effect on single-line text.

public DrawingTextAlignment Alignment { get; set; }

Property Value

DrawingTextAlignment

LetterCase

Gets or sets the LetterCase.

public DrawingTextLetterCase LetterCase { get; set; }

Property Value

DrawingTextLetterCase

MaxCharAngleDelta

Gets or sets the MaxCharAngleDelta.

public double MaxCharAngleDelta { get; set; }

Property Value

Double

MinDistance

Gets or sets the MinDistance.

public double MinDistance { get; set; }

Property Value

Double

Spacing

Gets or sets the Spacing.

public double Spacing { get; set; }

Property Value

Double

WrapWidth

Gets or sets the WrapWidth.

public double WrapWidth { get; set; }

Property Value

Double

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.

MaxNudgingInPixel

Gets or sets the maximum distance (in pixels) labels are nudged when searching for better positions.

public int MaxNudgingInPixel { get; set; }

Property Value

Int32

NudgingIntervalInPixel

Gets or sets the nudging step size in pixels.

public float NudgingIntervalInPixel { get; set; }

Property Value

Single

BestPlacementSymbolWidth

Gets or sets the symbol width used when evaluating best placement candidates.

public float BestPlacementSymbolWidth { get; set; }

Property Value

Single

BestPlacementSymbolHeight

Gets or sets the symbol height used when evaluating best placement candidates.

public float BestPlacementSymbolHeight { get; set; }

Property Value

Single

AbbreviationDictionary

Gets or sets the dictionary of label text abbreviations.

public Dictionary<string, string> AbbreviationDictionary { get; set; }

Property Value

Dictionary<String, String>

LeaderLineStyle

Gets or sets the style used to draw leader lines when enabled.

public LineStyle LeaderLineStyle { get; set; }

Property Value

LineStyle

LeaderLineRule

Gets or sets the rule that determines whether leader lines are allowed.

public LabelLeaderLinesRule LeaderLineRule { get; set; }

Property Value

LabelLeaderLinesRule

LeaderLineMinimumLengthInPixels

Gets or sets the minimum length, in pixels, required for a leader line to be drawn.

public float LeaderLineMinimumLengthInPixels { get; set; }

Property Value

Single

GridSize

This property gets and sets the grid size used for deterministic labeling.

public int GridSize { get; set; }

Property Value

Int32
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.

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

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.

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.

AllowLabelNudging

Gets or sets a value indicating whether the label engine may nudge labels to avoid overlaps.

public bool AllowLabelNudging { get; set; }

Property Value

Boolean

AllowLineCarriage

This property gets and sets whether the labeler will allow carriage returns to be inserted.

public bool AllowLineCarriage { get; set; }

Property Value

Boolean

        This property gets whether the labeler will allow carriage returns to be

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.

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

Boolean

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.

ForceLineCarriage

This property gets and sets whether the labeler will force carriage returns to be inserted.

public bool ForceLineCarriage { get; set; }

Property Value

Boolean

        This property gets whether the labeler will force carriage returns to be

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.

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

Boolean

        This property gets whether the labeler will try to fit the label as best as

Remarks:

None

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

Boolean

        This property gets whether the labeler will label every part of a multi-part

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.

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

Boolean

        This property gets whether the labeler will label every part of a multi-part

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.

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

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.

MaskType

Gets or sets the mask shape used when rendering labels.

public MaskType MaskType { get; set; }

Property Value

MaskType

OffsetFromLine

Gets or sets the pixel offset used to nudge labels away from the line they follow. Positive values move text to the left of the line direction; negative values move it to the right.

public float OffsetFromLine { get; set; }

Property Value

Single

MaxAdjacentCharDeltaAngle

Gets or sets the MaxAdjacentCharDeltaAngle.

public double MaxAdjacentCharDeltaAngle { get; set; }

Property Value

Double

Name

This property gets and set the name of the style.

public string Name { get; set; }

Property Value

String
This property gets the name of the style.

Remarks:

This name is not used by the system; it is only for the developer. However, it can be used if you generate your own legend.

IsActive

This property gets and sets the active status of the style.

public bool IsActive { get; set; }

Property Value

Boolean
This property gets the active status of the style.

Remarks:

If the style is not active then it will not draw.

RequiredColumnNames

This property gets the collection of fields that are required for the style.

public Collection<string> RequiredColumnNames { get; }

Property Value

Collection<String>

Remarks:

This property gets the collection of fields that are required for the style. These are in addition to any other columns you specify in styles that inherit from this one. For example, if you have use a ValueStyle and it requires a column name for the value comparison, then that column does not need to be in this collection. You only use the RequiredColumnNames for columns you need beyond those required by specific inherited styles.

Filters

Gets the list of SQL-style filters applied to this style.

public Collection<string> Filters { get; }

Property Value

Collection<String>

LabelDisplayMode

Gets the current label display mode that determines whether labels, shapes, or both are rendered.

public LabelDisplayMode LabelDisplayMode { get; }

Property Value

LabelDisplayMode

Constructors

LegacyStyleJsonTextStyle()

Initializes a new instance of the LegacyStyleJsonTextStyle class.

public LegacyStyleJsonTextStyle()

Methods

Parse(String)

Parses the specified input and returns the corresponding value.

public static LegacyStyleJsonTextStyle Parse(string styleJson)

Parameters

styleJson String
The style JSON.

Returns

LegacyStyleJsonTextStyle
The result of the operation.

Parse(JObject)

internal static LegacyStyleJsonTextStyle Parse(JObject jObject)

Parameters

jObject JObject

Returns

LegacyStyleJsonTextStyle

GetLabelingTextCore(Feature, GeoCanvas)

Provides the overridable implementation that returns labeling text for the specified parameters.

protected string GetLabelingTextCore(Feature feature, GeoCanvas canvas)

Parameters

feature Feature
The feature.

canvas GeoCanvas
The to draw to.

Returns

String
A string result.

GetLabelingCandidateCore(Feature, String, GeoCanvas, GeoFont, Single, Single, Double)

Provides the overridable implementation that returns labeling candidate for the specified parameters.

protected Collection<LabelingCandidate> GetLabelingCandidateCore(Feature feature, string text, GeoCanvas canvas, GeoFont font, float xOffsetInPixel, float yOffsetInPixel, double rotationAngle)

Parameters

feature Feature
The feature.

text String
The text.

canvas GeoCanvas
The to draw to.

font GeoFont
The font.

xOffsetInPixel Single
The x offset in pixel.

yOffsetInPixel Single
The y offset in pixel.

rotationAngle Double
The rotation angle.

Returns

Collection<LabelingCandidate>
The result of the operation.

DrawCore(IEnumerable<Feature>, GeoCanvas, Collection<SimpleCandidate>, Collection<SimpleCandidate>)

protected void DrawCore(IEnumerable<Feature> features, GeoCanvas canvas, Collection<SimpleCandidate> labelsInThisLayer, Collection<SimpleCandidate> labelsInAllLayers)

Parameters

features IEnumerable<Feature>

canvas GeoCanvas

labelsInThisLayer Collection<SimpleCandidate>

labelsInAllLayers Collection<SimpleCandidate>

DrawTextCore(GeoCanvas, Feature, PolygonShape, String, GeoFont, GeoBrush, GeoPen, IEnumerable<ScreenPointF>, DrawingLevel, Single, Single, DrawingTextAlignment, Single)

Provides the overridable implementation that draws text.

protected void DrawTextCore(GeoCanvas canvas, Feature feature, PolygonShape screenArea, string text, GeoFont font, GeoBrush fillBrush, GeoPen haloPen, IEnumerable<ScreenPointF> textPathInScreen, DrawingLevel drawingLevel, float xOffset, float yOffset, DrawingTextAlignment drawingTextAlignment, float rotateAngle)

Parameters

canvas GeoCanvas
The to draw to.

feature Feature
The feature.

screenArea PolygonShape
The screen area.

text String
The text.

font GeoFont
The font.

fillBrush GeoBrush
The brush used to fill interiors.

haloPen GeoPen
The pen used to draw outlines and strokes.

textPathInScreen IEnumerable<ScreenPointF>
The text path in screen.

drawingLevel DrawingLevel
The drawing level used for compositing and buffering.

xOffset Single
The horizontal offset, in pixels, applied when drawing.

yOffset Single
The vertical offset, in pixels, applied when drawing.

drawingTextAlignment DrawingTextAlignment
The drawing text alignment.

rotateAngle Single
The rotation angle, in degrees.

CloneFont(GeoFont)

Performs clone font.

public static GeoFont CloneFont(GeoFont font)

Parameters

font GeoFont
The font.

Returns

GeoFont
The result of the operation.

Events

Formatting

Occurs when the Formatting event is raised.

public event EventHandler<FormattingPositionStyleEventArgs> Formatting;

Formatted

Occurs when the Formatted event is raised.

public event EventHandler<FormattedPositionStyleEventArgs> Formatted;