Table of Contents

Class ZoomLevel

Namespace
ThinkGeo.Core
Assembly
ThinkGeo.Core.dll

This class defines how InternalFeatures will be drawn based on their scale.

public class ZoomLevel
Inheritance
ZoomLevel
Inherited Members

Remarks

This class defines how InternalFeatures will be drawn based on their scale. Inside of the ZoomLevelSet there are a number of zoom levels. We will determine which ZoomLevel to use based on which one has the Scale property closest to the current scale. The matching one will define the styles that will be used to draw the InternalFeatures on the map.

Constructors

ZoomLevel()

This is a constructor for the class.

public ZoomLevel()

Remarks

This is the default constructor. If you use this constructor, you should set the require properties on the class manually.

ZoomLevel(double)

This is a constructor for the class.

public ZoomLevel(double scale)

Parameters

scale double

This paramter is the scale for the ZoomLevel.

Remarks

This constructor allows you to provide the scale for this ZoomLevel.

Properties

ApplyUntilZoomLevel

This property gets and sets the zoom to which we will use this zoom level's styles.

public ApplyUntilZoomLevel ApplyUntilZoomLevel { get; set; }

Property Value

ApplyUntilZoomLevel

This property gets the zoom to which we will use this zoom level's styles.

Remarks

This property allows you to apply the current ZoomLevel's styles across many ZoomLevels. For example, you may want to display roads as a thin line from ZoomLevel10 through ZoomLevel15. To accomplish this easily, you can set the correct styles on ZoomLevel10 and then set its ApplyUntilZoomLevel property to Level15. This will mean that Level10's style will be used until Level15. There is no need to set Level11, Level12, Level13 and so on.

CustomStyles

This property gets a collection of custom styles used to draw.

public Collection<Style> CustomStyles { get; }

Property Value

Collection<Style>

This property gets a collection of custom styles used to draw.

Remarks

This is a collection of styles to draw. If you only need to draw one style, then we suggest you do not use this collection and instead use one of the default styles, such as DefaultAreaStyle, DefaultLineStyle, DefaultTextStyle, etc.

DefaultAreaStyle

This property gets and sets the default AreaStyle used to draw.

public AreaStyle DefaultAreaStyle { get; set; }

Property Value

AreaStyle

This property gets the default AreaStyle used to draw.

Remarks

If you set this style, then it will be used for drawing.

If you use the default styles, you should only use one. The one you use should match your feature data. For example, if your features are lines, then you should use the DefaultLineStyle.

DefaultLineStyle

This property gets and sets the default LineStyle used to draw.

public LineStyle DefaultLineStyle { get; set; }

Property Value

LineStyle

This property gets the default LineStyle used to draw.

Remarks

If you set this style, then it will be used for drawing.

If you use the default styles, you should only use one. The one you use should match your feature data. For example, if your features are lines, then you should use the DefaultLineStyle.

DefaultPointStyle

This property gets and sets the default PointStyle used to draw.

public PointStyle DefaultPointStyle { get; set; }

Property Value

PointStyle

This property gets the default PointStyle used to draw.

Remarks

If you set this style, then it will be used for drawing.

If you use the default styles, you should only use one. The one you use should match your feature data. For example, if your features are lines, then you should use the DefaultLineStyle.

DefaultTextStyle

This property gets and sets the default TextStyle used to draw.

public TextStyle DefaultTextStyle { get; set; }

Property Value

TextStyle

This property gets the default TextStyle used to draw.

Remarks

If you set this style, then it will be used for drawing.

If you use the default styles, you should only use one. The one you use should match your feature data. For example, if your features are lines, then you should use the DefaultLineStyle.

IsActive

This property gets and sets whether the ZoomLevel is active and should draw.

public bool IsActive { get; set; }

Property Value

bool

This property gets whether the ZoomLevel is active and should draw.

Remarks

Setting the value to false means that this zoom level will not be considered in the ZoomLevelSet and thus will not draw.

Name

This property gets and sets the name for the ZoomLevel.

public string Name { get; set; }

Property Value

string

This property gets the name for the ZoomLevel.

Remarks

The name is user defined. It is useful to set, as it may be used for higher level components such as legends, etc.

Scale

This property gets and sets the scale for the ZoomLevel.

public double Scale { get; set; }

Property Value

double

This property gets and sets the scale for the ZoomLevel.

Remarks

The scale

UseLegacyLabeling

public bool UseLegacyLabeling { get; set; }

Property Value

bool

Methods

Draw(GeoCanvas, IEnumerable<BaseShape>, Collection<SimpleCandidate>, Collection<SimpleCandidate>)

This method draws the ZoomLevel.

public void Draw(GeoCanvas canvas, IEnumerable<BaseShape> shapes, Collection<SimpleCandidate> currentLayerLabels, Collection<SimpleCandidate> allLayerLabels)

Parameters

canvas GeoCanvas

This parameter is the Canvas used to draw the InternalFeatures.

shapes IEnumerable<BaseShape>

This parameter is the collection of shapes that we will draw.

currentLayerLabels Collection<SimpleCandidate>

This parameter is the collection of labels in the current layer.

allLayerLabels Collection<SimpleCandidate>

This parameter is the collection of labels in all layers.

Remarks

This method is the concrete wrapper for the abstract method DrawCore. This method draws the representation of the Layer based on the extent you provided.

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.

Exceptions

ArgumentNullException

If you pass a null as the features, we will throw an ArgumentNullException.

ArgumentNullException

If you pass a null as the view, we will throw an ArgumentNullException.

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

This method draws the ZoomLevel.

public void Draw(GeoCanvas canvas, IEnumerable<Feature> features, Collection<SimpleCandidate> currentLayerLabels, Collection<SimpleCandidate> allLayerLabels)

Parameters

canvas GeoCanvas

This parameter is the Canvas used to draw the InternalFeatures.

features IEnumerable<Feature>

This parameter is the collection of features that we will draw.

currentLayerLabels Collection<SimpleCandidate>

This parameter is the collection of labels in the current layer.

allLayerLabels Collection<SimpleCandidate>

This parameter is the collection of labels in all layers.

Remarks

This method is the concrete wrapper for the abstract method DrawCore. This method draws the representation of the Layer based on the extent you provided.

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.

Exceptions

ArgumentNullException

If you pass a null as the features, we will throw an ArgumentNullException.

ArgumentNullException

If you pass a null as the view, we will throw an ArgumentNullException.

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

This method draws the ZoomLevel.

protected virtual void DrawCore(GeoCanvas canvas, IEnumerable<Feature> features, Collection<SimpleCandidate> currentLayerLabels, Collection<SimpleCandidate> allLayerLabels)

Parameters

canvas GeoCanvas

This parameter is the Canvas used to draw the InternalFeatures.

features IEnumerable<Feature>

This parameter is the collection of feature that we will draw.

currentLayerLabels Collection<SimpleCandidate>

This parameter is the collection of labels in the current layer.

allLayerLabels Collection<SimpleCandidate>

This parameter is the collection of labels in all layers.

Remarks

This method draws the representation of the Layer based on the extent you provided.

GetRequiredColumnNames()

This method returns the column data for each feature that is required for the styles to properly draw.

public Collection<string> GetRequiredColumnNames()

Returns

Collection<string>

This method returns a collection containing the required column names.

Remarks

In this method, we return the column names that are required for the styles 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 the 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.

HasValidStyles()

public bool HasValidStyles()

Returns

bool