ThinkGeo.MapSuite.Core.PositionStyle
Note: The page was created before Map Suite 10. Map Suite 10.0 organized many classes into new namespaces and assemblies as well as had a few minor breaks in compatibility. The majority of previously built code should work without modification assuming the new namespaces are added. For guidance on upgrading your existing code, please check out MapSuite 10 Upgrade Guide.
This abstract class encapsulates the labeling position logic. It is inherited by other styles, such as the TextSytle.
Inheritance Hierarchy
Members Summary
Public Constructors
Protected Constructors
PositionStyle()
Parameters
Public Methods
CloneDeep()
Return Value
Parameters
Draw(IEnumerable<Feature>,GeoCanvas,Collection<SimpleCandidate>,Collection<SimpleCandidate>)
Return Value
Type:Void
Description:N/A
Parameters
Draw(IEnumerable<BaseShape>,GeoCanvas,Collection<SimpleCandidate>,Collection<SimpleCandidate>)
Return Value
Type:Void
Description:N/A
Parameters
GetRequiredColumnNames()
Return Value
Type:Collection<String>
Description:N/A
Parameters
DrawSample(GeoCanvas,DrawingRectangleF)
Return Value
Type:Void
Description:N/A
Parameters
DrawSample(GeoCanvas)
Return Value
Type:Void
Description:N/A
Parameters
ToString()
Return Value
Type:String
Description:N/A
Parameters
Equals(Object)
Return Value
Type:Boolean
Description:N/A
Parameters
obj
Type:Object
Description:N/A
GetHashCode()
Return Value
Type:Int32
Description:N/A
Parameters
GetType()
Return Value
Type:Type
Description:N/A
Parameters
Protected Methods
Format(String,BaseShape)
Return Value
Type:String
Description:N/A
Parameters
text
Type:String
Description:N/A
FormatCore(String,BaseShape)
Return Value
Type:String
Description:N/A
Parameters
text
Type:String
Description:N/A
OnFormatting(FormattingPositionStyleEventArgs)
Return Value
Type:Void
Description:N/A
Parameters
OnFormatted(FormattedPositionStyleEventArgs)
Return Value
Type:Void
Description:N/A
Parameters
DrawCore(IEnumerable<Feature>,GeoCanvas,Collection<SimpleCandidate>,Collection<SimpleCandidate>)
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 canvas 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.
Return Value
Type:Void
Description:None
Parameters
GetRequiredColumnNamesCore()
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.
Return Value
Parameters
FilterFeatures(IEnumerable<Feature>,GeoCanvas)
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.
Return Value
Parameters
FilterFeaturesCore(IEnumerable<Feature>,GeoCanvas)
Return Value
Parameters
GetLabelingCandidates(Feature,GeoCanvas)
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.
Return Value
Parameters
GetLabelingCandidateCore(Feature,GeoCanvas)
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.
Return Value
Parameters
CheckDuplicate(LabelingCandidate,GeoCanvas,Collection<SimpleCandidate>,Collection<SimpleCandidate>)
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.
Return Value
Parameters
CheckDuplicateCore(LabelingCandidate,GeoCanvas,Collection<SimpleCandidate>,Collection<SimpleCandidate>)
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.
Return Value
Parameters
CheckOverlapping(LabelingCandidate,GeoCanvas,Collection<SimpleCandidate>,Collection<SimpleCandidate>)
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.
Return Value
Parameters
CheckOverlappingCore(LabelingCandidate,GeoCanvas,Collection<SimpleCandidate>,Collection<SimpleCandidate>)
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.
Return Value
Parameters
GetLabelingCandidateForOnePolygon(PolygonShape,String,GeoCanvas)
Return Value
Parameters
text
Type:String
Description:N/A
CloneDeepCore()
Return Value
Parameters
DrawSampleCore(GeoCanvas,DrawingRectangleF)
Return Value
Type:Void
Description:N/A
Parameters
Finalize()
Return Value
Type:Void
Description:N/A
Parameters
MemberwiseClone()
Return Value
Type:Object
Description:N/A
Parameters

ConvertToWorldCoordinate(PolygonShape,GeoCanvas)
Return Value
Parameters

ConvertToScreenShape(Feature,GeoCanvas)
Return Value
Parameters
Public Properties
PolygonLabelingLocationMode
Return Value
GridSize
Return Value
DuplicateRule
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.
Return Value
OverlappingRule
Return Value
AllowLineCarriage
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.
Return Value
SuppressPartialLabels
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.
Return Value
ForceLineCarriage
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.
Return Value
FittingPolygon
Return Value
LabelAllPolygonParts
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.
Return Value
LabelAllLineParts
Return Value
FittingPolygonFactor
Return Value
TextLineSegmentRatio
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.
Return Value
BestPlacement
The positioning of point labels is mainly determined by the PointPlacement property. This allows you place the text to the right, top, bottom, etc. of the point. In some cases, placing the text in a certain place will cause many labels to be suppressed when the points are dense. This property allows you to override the PointPlacement property and allow the labeler to try other locations, if the default location would cause the label to be suppressed.
Return Value
PointPlacement
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.
Return Value
MaskType
Return Value
Name
Return Value
IsActive
Return Value
RequiredColumnNames
Return Value
Filters
Return Value
Protected Properties
LabelPositions
Return Value
XOffsetInPixel
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.
Return Value
YOffsetInPixel
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.
Return Value
CustomTextStyles
Return Value
RotationAngle
Return Value
FittingLineInScreen
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.
Return Value
FittingPolygonInScreen
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.
Return Value
TextFormat
Return Value
NumericFormat
Return Value
DateFormat
Return Value
TextSolidBrush
Return Value
Font
Return Value
HaloPen
Return Value
TextColumnName
Return Value
Mask
Return Value
MaskMargin
Return Value
Advanced
Return Value
AllowSpline
Return Value
ForceHorizontalLabelForLine
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.
Return Value
SplineType
Return Value
DrawingLevel
Return Value
IsDefault
Return Value
FiltersCore
Return Value
Public Events
Formatting