Symbols graphically describe, categorize, or rank geographic features and labels to locate them and show qualitative and quantitative relationships. They display graphical elements on a layout. Symbols can be optionally stored, managed, and shared in collections called styles.
Examples of symbols can be found here.
Symbols are classified by the type of geometry they depict: CIMPointSymbol, CIMLineSymbol, CIMPolygonSymbol, CIMMeshSymbol, and CIMTextSymbol. Each symbol type has unique characteristics and properties. Symbols are built from component CIMSymbolLayers. These symbol layers are classified by their graphical structure—either CIMMarker, CIMStroke, or CIMFill. These layers are the building blocks of symbols; they combine to make rich graphical depictions. CIMTextSymbol are an exception—they have native properties but no component layers.
CIMFills symbol layers cover areal geometries with either a single solid color (CIMSolidFill), a series of regularly spaced lines (CIMHatchFill), a gradation from one color to another (CIMGradientFill), an image or texture (CIMPictureFill), or a reference to a procedural rule package (CIMProceduralSymbolLayer).
CIMMarker symbol layer types include CIMPictureMarker, CIMObjectMarker3D (which are true three-dimensional objects), CIMCharacterMarker (which references a font glyph for its shape), CIMVectorMarker, which are vector-based, and CIMProceduralSymbolLayer (referencing a rule package).
Symbols have at least one symbol layer, but can have more, as outlined below:
- CIMMarker layers: Draw relative to the point geometry
- CIMMarker layers: Draw at specified locations relative to the line geometry
- CIMStroke layers: Draw relative to the line geometry
- CIMMarker layers: Draw relative to the polygon outline or within the polygon interior, dependent on the marker placement setting
- CIMStroke layers: Draw relative to the polygon outline
- CIMFill layers: Draw relative to the polygon interior
- Text symbols do not contain layers but use CIMPolygonSymbol and can use additional decorator objects like CIMCallouts
In addition to these arrangements, you can add any symbol layer to any symbol when using a GeometricEffect. Geometric effects dynamically alter symbol geometry to create different appearances. For instance, a GeometricEffectBuffer can be added to a CIMLineSymbol so that the symbol can be drawn with a CIMFill.
CIMMarker layers are most commonly used in CIMPointSymbols, usually placed directly on the point feature geometry. You can adjust the anchor points and offsets of a marker to customize their relative position. CIMMarker layers are also used in CIMLineSymbols and CIMPolygonSymbols, drawn along lines and outlines, at endpoints, or within polygon interiors. This is achieved by selecting a CIMMarkerPlacement that places the symbols where desired.
For increased compatibility with mobile devices, a mobile profile of CIMSymbols is used. Mobile versions of symbols differ is a few minor ways: