This manual describes the available properties for controlling labeling in your ArcGIS Maps SDKs for Native Apps application.
For the purposes of labeling, graphics
1.0 Label Properties
A list of all supported ArcGIS Maps SDKs for Native Apps labeling properties, their values and ArcGIS Pro export interpretations.
1.1.0 angle
The angular positions and layout directions for labels on or around point feature symbols.
This optional object specifies how to position a label following the direction of an angle. The angular position may be different for each feature (driven by one or more feature attributes) or constant for all features (specified by a fixed number).
The LabelDefinition.placement will still be used to indicate
whether offset or centered positioning is required,
but the exact position will be overridden by the angle calculated for the feature.
Once the position has been determined, LabelDefinition.textLayout and
LabelDefinition.textOrientation are used to specify the layout of the text at that position.
1.1.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelAngle | null | "labelAngleInfo": { "angleExpressionInfo": {"expression": "iif($feature.type IS 11, $feature.SITE_ANGLE, 90-2*$feature["other angle"])","returnType": "number"},"rotationType": "arithmetic"} |
1.1.2 Property values
| Values | Summary |
|---|---|
angleExpression | Specifies how the angle (in degrees) is calculated from the feature attributes,using an Arcade expression. |
rotationType | Whether the angle should be interpreted as arithmetic or geographic. |
1.1.3 Other property relationships
1.1.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property angle.
Rotation (point features)
- label class properties -> position options -> placement
- label class properties -> position options -> position properties -> rotation -> rotation field -> expression builder
- label class properties -> position options -> position properties -> rotation -> rotation field
- label class properties -> position options -> position properties -> rotation -> additional rotation
- label class properties -> position options -> position properties -> rotation -> rotation type
| Rotation | angle |
|---|---|
rotation expression | angle.angleExpression |
rotation field AND additional rotation | angle.angleExpression |
rotation type | angle.rotationType |
1.1.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property angle.
Rotation (point features)
- label class properties -> position options -> position properties -> angles
| Rotation | angle |
|---|---|
place label at specified angles AND angle count MORE THAN 0 | angle.angleExpression |
place label at an angle specified by a field | angle.angleExpression |
1.2.0 deconflictionStrategy
The strategy for moving labels to avoid overlapping feature, annotation, dimension or graphic symbols or higher priority labels. In 3D LabelDeconflictionStrategy.static is selected by default.
The default is LabelDeconflictionStrategy.automatic
(which will be interpreted as LabelDeconflictionStrategy.static i.e.
use preferred location unless it would overlap an obstacle).
1.2.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelDeconflictionStrategy | static | "deconflictionStrategy":"dynamic" |
1.2.2 Property values
| Values | Summary |
|---|---|
automatic | The label will use the default deconfliction strategy (LabelDeconflictionStrategy.static). |
dynamic | Place the label in the preferred location, but move to an alternative location to not overlap higher priority labels or feature/graphic symbols. |
none | Place the label in the preferred location, regardless of overlaps with other features, graphics or labels. |
static | Place the label in the preferred location, unless it would overlap a higher priority label or feature/graphic symbol. |
dynamicNeverRemove | Place the label in the preferred location, but move to an alternative location to minimize overlapping higher priority labels or feature/graphic symbols. |
1.2.3 Other property relationships
- 2.1 priority x deconflictionStrategy
- 2.3 featureBoundaryOverlapStrategy x deconflictionStrategy
- 2.4 featureInteriorOverlapStrategy x deconflictionStrategy
1.2.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property deconflictionStrategy.
Position options (point features)
- label class properties -> position options -> placement properties -> position
- label class properties -> position options -> zones
- label class properties -> position options -> conflict resolution properties -> unplaced labels -> never remove
| Position options | deconflictionStrategy |
|---|---|
position IS offset label around the point AND zone count MORE THAN 1 AND never remove IS true | dynamicNeverRemove |
position IS offset label around the point AND zone count MORE THAN 1 AND never remove IS false | dynamic |
(position IS centered label OR (position IS offset label around the point AND zone count EQUALS 1)) AND never remove IS true | none |
(position IS centered label OR (position IS offset label around the point AND zone count EQUALS 1)) AND never remove IS false | static |
Position options (line features)
- label class properties -> position options -> placement properties -> offset along line
- label class properties -> position options -> conflict resolution properties -> unplaced labels -> never remove
| Position options | deconflictionStrategy |
|---|---|
offset along line IS best position AND never remove IS true | dynamicNeverRemove |
offset along line IS best position AND never remove IS false | dynamic |
offset along line IS before/after start/finish position AND never remove IS true | none |
offset along line IS before/after start/finish position AND never remove IS false | static |
Position options (polygon features)
- label class properties -> position options -> placement properties -> place label at fixed position within polygon
- label class properties -> position options -> conflict resolution properties -> unplaced labels -> never remove
| Position options | deconflictionStrategy |
|---|---|
place label at fixed position IS true AND never remove IS true | none |
place label at fixed position IS true AND never remove IS false | static |
place label at fixed position IS false AND never remove IS true | dynamicNeverRemove |
place label at fixed position IS false AND never remove IS false | dynamic |
1.2.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property deconflictionStrategy.
Position options (point features)
- label class properties -> position options -> priority
- label class properties -> position options -> place overlapping labels
| Position options | deconflictionStrategy |
|---|---|
priority zone count MORE THAN 1 AND place overlapping labels IS true | dynamicNeverRemove |
priority zone count MORE THAN 1 AND place overlapping labels IS false | dynamic |
zones or angles count EQUAL TO 1 AND place overlapping labels IS true | none |
zones or angles count EQUAL TO 1 AND place overlapping labels IS false | static |
Position options (line features)
- label class properties -> position options
- label class properties -> position options -> location along the line
- label class properties -> position options -> place overlapping labels
| Position options | deconflictionStrategy |
|---|---|
position IS horizontal AND place overlapping labels IS true | dynamicNeverRemove |
position IS horizontal AND place overlapping labels IS false | dynamic |
position IS parallel AND location along the line IS at best AND place overlapping labels IS true | dynamicNeverRemove |
position IS parallel AND location along the line IS at best AND place overlapping labels IS false | dynamic |
position IS parallel AND location along the line IS NOT at best AND place overlapping labels IS true | none |
position IS parallel AND location along the line IS NOT at best AND place overlapping labels IS false | static |
position IS curved AND place overlapping labels IS true | dynamicNeverRemove |
position IS curved AND place overlapping labels IS false | dynamic |
position IS perpendicular AND location along the line IS at best AND place overlapping labels IS true | dynamicNeverRemove |
position IS perpendicular AND location along the line IS at best AND place overlapping labels IS false | dynamic |
position IS perpendicular AND location along the line IS NOT at best AND place overlapping labels IS true | none |
position IS perpendicular AND location along the line IS NOT at best AND place overlapping labels IS false | static |
Position options (polygon features)
- label class properties -> position options -> place overlapping labels
| Position options | deconflictionStrategy |
|---|---|
place overlapping labels IS true | none |
place overlapping labels IS false | static |
1.3.0 expression
The expression script used to calculate the label text.
The expression may be a combination of literal text and attribute values
from the feature being labeled.
The syntax of the expression is determined by which label expression object is used:
ArcadeLabelExpression, SimpleLabelExpression or WebmapLabelExpression.
A label expression using one scripting language can be replaced by an expression
using a different scripting language just by creating an object of the new
LabelExpression subclass and assigning it to LabelDefinition.expression.
The default value is an empty ArcadeLabelExpression,
which will evaluate to an empty text label.
The expression needs to create a text string which will be used as the label text. The text string can be any legal UTF16 characters.
The text string can also include HTML-style formatting tags e.g.
"Hello <BOL>World</BOL>"
where the angle-bracketed tags will not appear in the label, but may change the presentation of the text. In the example, the “World” will appear in bold.
The available tags are:
"<BOL></BOL>"for bold text"<UND></UND>"for underlined text"<ITA></ITA>"for italic text"<CLR red='256'></CLR>"for colored text"<FNT name='Arial' size='18'></FNT>"for text using a different size or font (if available on client).
Tags can be upper or lower case, but not a mixture.
Tags can be nested e.g. "<ITA>Hello <BOL>World</BOL></ITA>".
Full documentation of the tag parameters is available in the document Text formatting tags.
1.3.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelExpression | | "labelExpressionInfo":{"expression":"round($feature.length,2) + "m^2""} |
1.3.2 Property values
| Values | Summary |
|---|---|
expression | The label expression script string. |
objectType | The type of the label expression. |
1.3.3 Other property relationships
None
1.3.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property expression.
expression (all features)
- label properties -> class options -> expression
- label properties -> class options -> language
| expression | expression |
|---|---|
expression AND language IS arcade | expression.arcadeExpression |
expression IS single field AND language NOT arcade | expression.simpleExpression |
1.3.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property expression.
expression (all features)
- label properties -> label expression
- label properties -> label expression -> language
| expression | expression |
|---|---|
expression AND language IS arcade | expression.arcadeExpression |
expression IS single field AND language NOT arcade | expression.simpleExpression |
1.4.0 featureBoundaryOverlapStrategy
The strategy for whether other labels are allowed to overlap the boundary of polygon features/graphics being labeled by this LabelDefinition. In 3D scenes, labels will be allowed to overlap the boundaries of polygon features.
The default is LabelOverlapStrategy.automatic, which will give the same behavior as
LabelOverlapStrategy.allow.
1.4.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelOverlapStrategy | allow | "allowOverlapOfFeatureBoundary":"avoid" |
1.4.2 Property values
| Values | Summary |
|---|---|
automatic | The other label will use the default overlap behavior which depends on the object being overlapped. |
allow | The other label will be allowed to place itself in its preferred location, ignoring this obstacle. |
avoid | The other label will move to minimize overlapping this obstacle, but will overlap if necessary. |
exclude | The other label will not be placed rather than overlap this obstacle. |
1.4.3 Other property relationships
1.4.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property featureBoundaryOverlapStrategy.
Boundary weight (polygon features)
- label weight ranking -> feature layers
| Boundary weight | featureBoundaryOverlapStrategy |
|---|---|
polygon boundary weight IS 0 | allow |
polygon boundary weight IS 1..999 | avoid |
polygon boundary weight IS 1000 | exclude |
1.4.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property featureBoundaryOverlapStrategy.
None, not supported for featureBoundaryOverlapStrategy
1.5.0 featureInteriorOverlapStrategy
The strategy for whether other labels are allowed to overlap the interior of polygon features/graphics being labeled by this LabelDefinition. In 3D scenes, labels will be allowed to overlap the interiors of polygon features.
The default is LabelOverlapStrategy.automatic which
will give the same behavior as LabelOverlapStrategy.allow.
1.5.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelOverlapStrategy | allow | "allowOverlapOfFeatureInterior":"exclude" |
1.5.2 Property values
| Values | Summary |
|---|---|
automatic | The other label will use the default overlap behavior which depends on the object being overlapped. |
allow | The other label will be allowed to place itself in its preferred location, ignoring this obstacle. |
avoid | The other label will move to minimize overlapping this obstacle, but will overlap if necessary. |
exclude | The other label will not be placed rather than overlap this obstacle. |
1.5.3 Other property relationships
1.5.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property featureInteriorOverlapStrategy.
Feature weight (all features)
- label weight ranking -> feature layers
| Feature weight | featureInteriorOverlapStrategy |
|---|---|
feature weight IS 0 | allow |
feature weight IS 1..999 | avoid |
feature weight IS 1000 | exclude |
1.5.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property featureInteriorOverlapStrategy.
Feature weight (all features)
- label class properties -> position options -> conflict resolution properties -> feature weight
| Feature weight | featureInteriorOverlapStrategy |
|---|---|
feature weight IS none | allow |
feature weight IS low | allow |
feature weight IS medium | avoid |
feature weight IS high | exclude |
1.6.0 labelOverlapStrategy
The strategy for whether other labels are allowed to overlap labels created by this LabelDefinition. In 3D, labels will not be allowed to overlap other labels. Overlapping labels will not be displayed until the user zooms in further so that the labels don’t overlap.
The default is LabelOverlapStrategy.automatic which
will give the same behavior as LabelOverlapStrategy.exclude.
1.6.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelOverlapStrategy | exclude | "allowOverlapOfLabel":"avoid" |
1.6.2 Property values
| Values | Summary |
|---|---|
automatic | The other label will use the default overlap behavior which depends on the object being overlapped. |
allow | The other label will be allowed to place itself in its preferred location, ignoring this obstacle. |
avoid | The other label will move to minimize overlapping this obstacle, but will overlap if necessary. |
exclude | The other label will not be placed rather than overlap this obstacle. |
1.6.3 Other property relationships
None
1.6.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property labelOverlapStrategy.
Background label (all features)
- label class properties -> position options -> conflict resolution properties -> background labels
| Background label | labelOverlapStrategy |
|---|---|
background label IS true | allow |
background label IS false | exclude |
1.6.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property labelOverlapStrategy.
Label weight (all features)
- label class properties -> position -> conflict resolution -> label weight
| Label weight | labelOverlapStrategy |
|---|---|
label weight IS low | allow |
label medium IS medium | avoid |
label high IS high | exclude |
1.7.0 lineConnection
The strategy for whether line features with the same label, and matching end vertices, should be joined before sharing a label. 3D line features will be treated as independent features with their own label.
The default is LabelLineConnection.automatic,
which will be interpreted as LabelLineConnection.minimizeLabels.
1.7.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelLineConnection | minimizeLabels | "lineConnection": "minimizeLabels" |
1.7.2 Property values
| Values | Summary |
|---|---|
automatic | The default approach for connectable features is to connect them (LabelLineConnection.minimizeLabels) |
minimizeLabels | Line geometries with the same label and coincident end vertices should be considered together as a single, continuous geometry when placing labels. |
none | Keep one label per line feature geometry. |
unambiguousLabels | Line geometries with the same label and coincident end vertices should be joined, until they hit a junction. |
1.7.3 Other property relationships
None
1.7.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property lineConnection.
Connect features (all features)
- label class properties -> position options -> conflict resolution properties -> line connection
| Connect features | lineConnection |
|---|---|
connect features IS false | none |
connect features IS true AND line connection IS minimize labels | minimizeLabels |
connect features IS true AND line connection IS unambiguous | unambiguousLabels |
1.7.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property lineConnection.
Line connection (all features)
- default
| Line connection | lineConnection |
|---|---|
default | none |
1.8.0 maxScale
The maximum scale at which labels will be visible. In 3D scenes,the scale range is between individual label and view plane instead of map and view plane.
Labels will only be visible when the viewing scale is smaller than (or equal to) the maxScale.
For example, if the viewing scale is 1:12000 and the LabelDefinition.maxScale is 1:10000,
then the labels will be visible (because 1/12000 < 1/10000).
A LabelDefinition.maxScale of 0, which is the default, indicates no upper limit on the viewing scale.
1.8.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
double | 0 | "maxScale": 10000 |
1.8.2 Property values
| Values | Summary |
|---|---|
0 | Always visible at all scales |
GREATER THAN 0 | Show label when viewing scale is less than or equal to maxScale |
1.8.3 Other property relationships
None
1.8.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property maxScale.
visibility range (all features)
- label class properties -> class -> visibility range -> in beyond
| visibility range | maxScale |
|---|---|
in beyond value | maxScale value |
1.8.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property maxScale.
visibility range (all features)
- label class properties -> class -> visibility range -> in beyond
| visibility range | maxScale |
|---|---|
in beyond value | maxScale value |
1.9.0 minScale
The minimum scale at which labels will be visible. In 3D scenes, the scale range is between individual label and view plane instead of map and view plane.
Labels will only be visible when the viewing scale is larger than (or equal to) the minScale.
For example, if the viewing scale is 1:12000 and the LabelDefinition.minScale is 1:20000,
then the labels will be visible (because 1/12000 > 1/20000).
A LabelDefinition.minScale of 0, which is the default, indicates no lower limit on the viewing scale.
1.9.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
double | 0 | "minScale": 1250000 |
1.9.2 Property values
| Values | Summary |
|---|---|
0 | Always visible at all scales |
GREATER THAN 0 | Show label when viewing scale is greater than or equal to minScale |
1.9.3 Other property relationships
None
1.9.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property minScale.
visibility range (all features)
- label class properties -> class -> visibility range -> out beyond
| visibility range | minScale |
|---|---|
out beyond value | minScale value |
1.9.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property minScale.
visibility range (all features)
- label class properties -> class -> visibility range -> out beyond
| visibility range | minScale |
|---|---|
out beyond value | minScale value |
1.10.0 multipartStrategy
The strategy for how many labels should be placed on each polyline or polygon (multi-ring) feature.
The default is LabelMultipartStrategy.automatic.
1.10.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelMultipartStrategy | labelPerPart | "multiPart": "labelPerPart" |
1.10.2 Property values
| Values | Summary |
|---|---|
automatic | Labeling will use the default distribution of labels across multi-part features. |
labelLargest | If a feature consists of multiple parts, only the largest one will be assigned a label. |
labelPerFeature | One label per feature, but not supported yet in ArcGIS Maps SDKs for Native Apps. |
|labelPerPart|If a feature consists of multiple geometries, each geometry will be assigned a label.|
|labelPerSegment|One label per segment, but not supported yet in ArcGIS Maps SDKs for Native Apps.|
1.10.3 Other property relationships
None
1.10.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property multipartStrategy.
Label largest (polygon features)
- label class properties -> position options -> conflict resolution properties -> label largest part
| Label largest | multipartStrategy |
|---|---|
label largest feature part IS true | labelLargest |
label largest feature part IS false | labelPerPart |
1.10.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property multipartStrategy.
Duplicate labels (polygon features)
- label class properties -> position options -> position properties -> duplicate labels
| Duplicate labels | multipartStrategy |
|---|---|
remove all duplicates | labelLargest |
one label per feature | labelLargest |
one label per part | labelPerPart |
1.11.0 name
Text name for the class of labels.
This name is assigned by the map author to clarify the purpose of this label definition. It is used for display or debugging purposes. If no name is explicitly assigned, then an empty text string is stored.
1.11.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
String | | "name": "Perimeter length" |
1.11.2 Property values
| Values | Summary |
|---|---|
| no name |
industrial buildings | typical name |
buildings-commercial-retail | more specific name |
1.11.3 Other property relationships
None
1.11.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property name.
Label class name (all features)
- label class properties -> general -> name
| Label class name | name |
|---|---|
name | name |
1.11.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property name.
Label class name (all features)
- label class properties -> general -> name
| Label class name | name |
|---|---|
name | name |
1.12.0 offsetDistance
The distance (in points i.e. 1/72 inches) that text should be moved away from its features.
The distance is measured from the point symbol radius or line feature symbology edge. The distance is measured on the screen (i.e. not in the map) in points, comparable to the text font size.
This can be a negative value, to pull the label closer to the feature if, for example, the average size for a point symbol is overly conservative for the actual graphic shown.
If no value is set, then 1 point is assumed.
1.12.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
double | 1 | "offsetDistance": 5 |
1.12.2 Property values
| Values | Summary |
|---|---|
number | signed numeric value |
1.12.3 Other property relationships
None
1.12.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property offsetDistance.
Preferred offset (all features)
- label class properties -> position option -> placement properties -> placement
| Preferred offset | offsetDistance |
|---|---|
preferred offset | offsetDistance |
1.12.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property offsetDistance.
None, not supported for offsetDistance
1.13.0 overrunStrategy
The strategy for whether a label will be visible at scales where the feature is too small for the label to fit. Not supported by 3D scenes.
The default is LabelOverrunStrategy.automatic which
will give different behavior depending on the type of feature that the label might overrun.
1.13.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelOverrunStrategy | automatic | "allowOverrun": false |
1.13.2 Property values
| Values | Summary |
|---|---|
automatic | The label will use the default overrun behavior which depends on the object being overrun.This value corresponds to no value being specified for the LabelDefinition.overrunStrategy property. |
none | The label cannot run past the ends of its line geometry or edges of its polygon geometry. |
allow | The label can run past the ends of its line geometry or edges or its polygon geometry. |
1.13.3 Other property relationships
None
1.13.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property overrunStrategy.
overrun (line features)
- label class properties -> position properties -> placement options -> placement properties -> offset along line
- label class properties -> position properties -> conflicting resolution properties -> overrun -> maximum
- label class properties -> position options -> conflict resolution properties -> unplaced labels -> never remove
| overrun | overrunStrategy |
|---|---|
offset along line IS best position AND maximum IS MORE THAN 0 | allow |
offset along line IS best position AND never remove IS true | allow |
offset along line IS best position AND never remove IS false AND maximum IS 0 | none |
overrun (polygon features)
- label class properties -> position options -> position properties -> overrun -> maximum
| overrun | overrunStrategy |
|---|---|
maximum IS EQUAL TO 0 | allow |
maximum IS LESS THAN 0 | none |
1.13.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property overrunStrategy.
overlap (line features)
- label class properties -> position options -> position properties -> location along the line
- label class properties -> conflict resolution properties -> place overlapping labels
| overlap | overrunStrategy |
|---|---|
location along the line IS at best AND place overlapping labels IS true | allow |
location along the line IS at best AND place overlapping labels IS false | none |
only place label inside polygon (polygon features)
- label class properties -> position options -> only place label inside polygon
| only place label inside polygon | overrunStrategy |
|---|---|
true | none |
false | allow |
1.14.0 placement
The preferred position of the text label, with respect to its feature geometry.
The default is LabelingPlacement.automatic. The effect of this is the same as one
of the following, depending on the type of feature geometry:
LabelingPlacement.pointAboveRightfor point featuresLabelingPlacement.polygonAlwaysHorizontalfor polygon featuresLabelingPlacement.lineAboveAlongfor line features
1.14.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelingPlacement | automatic | "labelPlacement": "esriServerPolygonPlacementAlwaysHorizontal" |
1.14.2 Property values
| Values | Summary |
|---|---|
automatic | Default position for the label, dependent on the type of feature being labeled. |
unknown | Preferred placement position has not been specified. |
lineAboveAfter | Lower-left corner of label is at final geometry coord; label extrapolates the last geometry segment. |
lineAboveAlong | Lower midpoint of label prefers the midpoint of the geometry; label follows the geometry segments. |
lineAboveBefore | Lower right corner of label is at first geometry coord; label extrapolates the first geometry segment. |
lineAboveEnd | Lower right corner of label is at final geometry coord; label follows the last geometry segments. |
lineAboveStart | Lower left corner of label is at first geometry coord, label follows the first geometry segments. |
lineBelowAfter | Upper left corner of label is at final geometry coord, label extrapolates the last geometry segment. |
lineBelowAlong | Upper midpoint of label prefers the midpoint of the geometry, label follows the geometry segments. |
lineBelowBefore | Upper right corner of label is at first geometry coord, label extrapolates the first geometry segment. |
lineBelowEnd | Upper right corner of label is at final geometry coord, label follows the last geometry segments. |
lineBelowStart | Upper left corner of label is at first geometry coord, label follows the first geometry segments. |
lineCenterAfter | Left midpoint of label is at final geometry coord, label extrapolates the last geometry segment. |
lineCenterAlong | Center of label prefers the midpoint of the geometry, label follows the geometry segments. |
lineCenterBefore | Right midpoint of label is at first geometry coord, label extrapolates the first geometry segment. |
lineCenterEnd | Right midpoint of label is at final geometry coord, label follows the last geometry segments. |
lineCenterStart | Left midpoint of label is at first geometry coord, label follows the first geometry segments. |
pointAboveCenter | Lower midpoint of label is offset north of point symbol. |
pointAboveLeft | Lower-right corner of the label is offset northwest of point symbol. |
pointAboveRight | Lower left corner of the label is offset North-east of point symbol. |
pointBelowCenter | Upper midpoint of label is offset South of point symbol. |
pointBelowLeft | Upper right corner of the label is offset South-west of point symbol. |
pointBelowRight | Upper left corner of the label is offset South-east of point symbol. |
pointCenterCenter | Center of label is placed on geometry point. |
pointCenterLeft | Right midpoint of label is offset West of point symbol. |
pointCenterRight | Left midpoint of label is offset East of point symbol. |
polygonAlwaysHorizontal | Center of label is as far inside polygon as possible. |
1.14.3 Other property relationships
1.14.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property placement.
Label placement (point features)
- label class properties -> position options -> placement properties -> placement
- label class properties -> position options -> placement properties -> zones
| Label placement | placement |
|---|---|
placement IS best position AND north zone IS highest priority | pointAboveCenter |
placement IS best position AND north east zone IS highest priority | pointAboveRight |
placement IS best position AND east zone IS highest priority | pointCenterRight |
placement IS best position AND south east zone IS highest priority | pointBelowRight |
placement IS best position AND south zone IS highest priority | pointBelowCenter |
placement IS best position AND south west zone IS highest priority | pointBelowLeft |
placement IS best position AND west zone IS highest priority | pointCenterLeft |
placement IS best position AND north west zone IS highest priority | pointAboveLeft |
placement IS centered on point | pointCenterCenter |
placement IS top of point | pointAboveCenter |
placement IS top right of point | pointAboveRight |
placement IS right of point | pointCenterRight |
placement IS bottom right of point | pointBelowRight |
placement IS bottom of point | pointBelowCenter |
placement IS bottom left of point | pointCenterLeft |
placement IS left of point | pointAboveLeft |
placement IS top left of point | pointAboveLeft |
Label placement (line features)
- label class properties -> position options -> placement properties -> placement
- label class properties -> position options -> placement properties -> constrain offset
- label class properties -> position options -> placement properties -> offset along line
| Label placement | placement |
|---|---|
placement IS offset AND constrain offset IS above line AND offset along line IS best position | aboveAlong |
placement IS offset AND constrain offset IS left of line AND offset along line IS best position | aboveAlong |
placement IS offset AND constrain offset IS below line AND offset along line IS best position | belowAlong |
placement IS offset AND constrain offset IS right of line AND offset along line IS best position | belowAlong |
placement IS offset AND constrain offset IS above line AND offset along line IS before start of line | aboveBefore |
placement IS offset AND constrain offset IS above line AND offset along line IS along line from start | aboveStart |
placement IS offset AND constrain offset IS above line AND offset along line IS best position | aboveAlong |
placement IS offset AND constrain offset IS above line AND offset along line IS along line from end | aboveEnd |
placement IS offset AND constrain offset IS above line AND offset along line IS after end of line | aboveAfter |
placement IS center AND offset along line IS before start of line | centerBefore |
placement IS center AND offset along line IS along line from start | centerStart |
placement IS center AND offset along line IS best position | centerAlong |
placement IS center AND offset along line IS along line from end | centerEnd |
placement IS center AND offset along line IS after end of line | centerAfter |
placement IS offset AND constrain offset IS below line AND offset along line IS before start of line | belowBefore |
placement IS offset AND constrain offset IS below line AND offset along line IS along line from start | belowStart |
placement IS offset AND constrain offset IS below line AND offset along line IS best position | belowAlong |
placement IS offset AND constrain offset IS below line AND offset along line IS along line from end | belowEnd |
placement IS offset AND constrain offset IS below line AND offset along line IS after end of line | belowAfter |
Label placement (polygon features)
- default
| Label placement | placement |
|---|---|
default | polygonCenterHorizontal |
1.14.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property placement.
Label placement (point features)
- label class properties -> position options -> position properties -> priority
- label class properties -> position options -> position properties -> place label on top of point
- label class properties -> position options -> position properties -> offset label horizontally around the point
| Label placement | placement |
|---|---|
place label on top of point IS true | pointCenterCenter |
place label at specified angles | pointAboveRight |
place label at an angle specified by a field | pointAboveRight |
offset label horizontally around the point AND north zone is highest priority | pointAboveCenter |
offset label horizontally around the point AND north east zone is highest priority | pointAboveRight |
offset label horizontally around the point AND east zone is highest priority | pointCenterRight |
offset label horizontally around the point AND south east zone is highest priority | pointBelowRight |
offset label horizontally around the point AND south zone is highest priority | pointBelowCenter |
offset label horizontally around the point AND south west zone is highest priority | pointBelowLeft |
offset label horizontally around the point AND west zone is highest priority | pointCenterLeft |
offset label horizontally around the point AND north west zone is highest priority | pointAboveLeft |
Label placement (line features)
- label class properties -> position options -> align to
- label class properties -> position options -> on the line
- label class properties -> position options -> left of the line
- label class properties -> position options -> right of the line
- label class properties -> position options -> location along the line
| Label placement | placement |
|---|---|
align to IS line AND left of the line IS true AND location along line IS at start | lineAboveStart |
align to IS line AND left of the line IS true AND location along line IS at best | lineAboveAlong |
align to IS line AND left of the line IS true AND location along line IS at end | lineAboveEnd |
align to IS line AND on the line IS true AND location along line IS at start | lineCenterStart |
align to IS line AND on the line IS true AND location along line IS at best | lineCenterAlong |
align to IS line AND on the line IS true AND location along line IS at end | lineCenterEnd |
align to IS line AND right of line IS true AND location along line IS at start | lineBelowStart |
align to IS line AND right of line IS true AND location along line IS at best | lineBelowAlong |
align to IS line AND right of line IS true AND location along line IS at end | lineBelowEnd |
align to IS page AND above the line IS true AND location along line IS at start | lineAboveStart |
align to IS page AND above the line IS true AND location along line IS at best | lineAboveAlong |
align to IS page AND above the line IS true AND location along line IS at end | lineAboveEnd |
align to IS page AND on the line IS true AND location along line IS at start | lineCenterStart |
align to IS page AND on the line IS true AND location along line IS at best | lineCenterAlong |
align to IS page AND on the line IS true AND location along line IS at end | lineCenterEnd |
align to IS page AND below the line IS true AND location along line IS at start | lineBelowStart |
align to IS page AND below the line IS true AND location along line IS at best | lineBelowAlong |
align to IS page AND below the line IS true AND location along line IS at end | lineBelowEnd |
default (polygon features)
- default
| default | placement |
|---|---|
default | polygonCenterHorizontal |
1.15.0 priority
Defines which labels are placed first, and can also supplant existing lower-priority labels (e.g. during panning).
Lower values indicate more important labels i.e.:
- 0 is the most important
- 5 is high priority
- 15 is medium priority
- Higher values indicate lower priority
If set to -1 or not set at all, then default values are used, depending on the geometry types of the features:
- 12 for point features
- 15 for line features
- 18 for polygon features
This value does not have to be an integer because it is just a continuum of values for comparison. Users can use this to specify that a class of labels should have priority between two other classes with close priorities.
For example, PreferredRoutes might be given priority 13 to appear ahead of general line feature labels, but after general point feature labels. And HistoricSites might be given priority 12.5 to appear ahead of PreferredRoute labels, but still after general point feature labels.
1.15.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
double | -1 | "priority": 30 |
1.15.2 Property values
| Values | Summary |
|---|---|
-1 | automatically calculate based on feature geometry type |
0 | most important |
12 | default priority for point features |
15 | default priority for line |
18 | default priority for polygon features |
1.15.3 Other property relationships
1.15.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property priority.
Priority ranking (all features)
- labeling ribbon -> more -> priorities
| Priority ranking | priority |
|---|---|
label class priority order | priority |
1.15.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property priority.
Priority ranking (all features)
- labeling ribbon -> more -> priorities
| Priority ranking | priority |
|---|---|
label class priority order | priority |
1.16.0 removeDuplicatesDistance
A value that controls the duplicate thinning radius (in points i.e. 1/72 inches).
The distance is measured on the screen (i.e. not in the map) in points, comparable to the text font size.
This value is only used if LabelDefinition.removeDuplicatesStrategy is enabled.
The default value is 0. This indicates that duplicates should be removed from the entire extent.
1.16.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
double | 0 | "removeDuplicatesDistance": 300 |
1.16.2 Property values
| Values | Summary |
|---|---|
0 | all duplicates should be removed from the entire extent |
GREATER THAN 0 | remove duplicate distance |
1.16.3 Other property relationships
None
1.16.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property removeDuplicatesDistance.
Search Radius (all features)
- label class properties -> position options -> conflict resolution properties -> remove duplicate labels -> search radius
| Search Radius | removeDuplicatesDistance |
|---|---|
remove within fixed distance IS true AND search radius value | remove duplicate distance value converted to points |
remove all IS true | 0 |
1.16.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property removeDuplicatesDistance.
Default (all features)
- default
| Default | removeDuplicatesDistance |
|---|---|
default | 0 |
1.17.0 removeDuplicatesStrategy
The strategy for whether labels are removed if other features have the same text label. This can reduce clutter and free up space.
The default is LabelRemoveDuplicatesStrategy.automatic,
which will be interpreted as LabelRemoveDuplicatesStrategy.none indicating that all
labels should be shown if possible.
The distance within which to look for duplicates is controlled
by LabelDefinition.removeDuplicatesDistance.
1.17.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelRemoveDuplicatesStrategy | automatic | "removeDuplicates": "featureType" |
1.17.2 Property values
| Values | Summary |
|---|---|
automatic | The default approach to duplicate labels to is keep them (LabelRemoveDuplicatesStrategy.none). |
all | Remove nearby duplicate labels. |
featureType | Remove nearby duplicate labels, if they belong to the same Feature Type. |
labelClass | Remove nearby duplicate labels, if they below to the same Label Class. |
none | No duplicates should be removed. |
1.17.3 Other property relationships
1.17.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property removeDuplicatesStrategy.
Remove duplicate labels (all features)
- label class properties -> position options -> conflict resolution properties -> remove duplicate labels
| Remove duplicate labels | removeDuplicatesStrategy |
|---|---|
remove duplicate labels IS do not remove | none |
remove duplicate labels IS remove within fixed distance | featureType |
remove duplicate labels IS remove all | featureType |
1.17.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property removeDuplicatesStrategy.
Duplicate labels (all features)
- label class properties -> position options -> position properties -> duplicate labels
| Duplicate labels | removeDuplicatesStrategy |
|---|---|
duplicate labels IS remove all duplicates | all |
duplicate labels IS one label per feature | none |
duplicate labels IS one label per part | none |
1.18.0 repeatDistance
The distance apart (in points i.e. 1/72 inches) that the repetitions should be. In 3D scenes, only one label will be placed per line feature.
This value is only used if LabelDefinition.repeatStrategy is enabled.
The distance is measured on the screen along the line feature. As the user zooms in closer,
two repetitions move further apart on the screen, until there is room for a new repetition between them.
The default is 216 points i.e. line labels should be repeated
approximately every 3 inches along long features.
The distance is considered a guide for the approximate label separation and should not be used for precise distance markings.
A distance of 0 disables label repetition.
1.18.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
double | 216 | "repeatLabelDistance":200 |
1.18.2 Property values
| Values | Summary |
|---|---|
positive number | a signed numeric value |
1.18.3 Other property relationships
None
1.18.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property repeatDistance.
Repeat minimal interval (line features)
- label class properties -> position options -> conflict resolution properties -> repeat -> minimum interval
| Repeat minimal interval | repeatDistance |
|---|---|
minimum interval | converted to repeatDistance point value |
1.18.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property repeatDistance.
None, not supported for repeatDistance
1.19.0 repeatStrategy
The strategy for whether a label should have multiple copies created and placed along or across the same feature. In 3D scenes, only label will be placed per line feature.
The default is LabelRepeatStrategy.automatic.
The frequency of repetition is controlled by the LabelDefinition.repeatDistance property.
This property is currently only supported for line features, but will be extended to polygons in the future.
1.19.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelRepeatStrategy | automatic | "repeatLabel": true |
1.19.2 Property values
| Values | Summary |
|---|---|
automatic | Labeling will use the default repetition for the feature type. |
none | Only place one label per feature. |
repeat | Repeat the label along or across the feature. |
1.19.3 Other property relationships
None
1.19.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property repeatStrategy.
{“repeatLabel”:true, “repeatLabelDistance”:200} (line features)
- label class properties -> position properties -> placement options -> placement properties -> offset along line
- label class properties -> position options -> conflict resolution properties -> repeat -> minimum interval
| {“repeatLabel”:true, “repeatLabelDistance”:200} | repeatStrategy |
|---|---|
offset along line IS best position AND minimum interval MORE THAN 0 | repeat |
1.19.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property repeatStrategy.
None, not supported for repeatStrategy
1.20.0 stackAlignment
The strategy for how multi-row (stacked) text should be aligned.
Multi-row text labels can be horizontally aligned on the left, right or at its center.
This preference can be specified by the TextSymbol assigned to the LabelDefinition.
By using the LabelDefinition.stackAlignment property, the user can choose
to use the TextSymbol.horizontalAlignment property for all labels,
or can choose to have the most aesthetic alignment calculated case-by-case
for each label depending on its placement position around its feature.
This is particularly useful for labels of dense point features, where labels may move above,
below, left or right of their point symbol, in order to fit on the display.
The default value is LabelStackAlignment.automatic
(which will have the same effect on labels as LabelStackAlignment.textSymbol).
This property has no effect if LabelDefinition.stackStrategy = LabelStackStrategy.none.
1.20.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelStackAlignment | textSymbol | "stackAlignment": "dynamic" |
1.20.2 Property values
| Values | Summary |
|---|---|
automatic | The default behavior is to use LabelStackAlignment.textSymbol. |
dynamic | Set the alignment depending upon the label’s position with respect to its feature. |
textSymbol | Follow the alignment specified by the TextSymbol.horizontalAlignment. |
1.20.3 Other property relationships
1.20.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property stackAlignment.
Horizontal alignment (all features)
- label class properties -> position options -> fitting strategy properties -> stack -> horizontal alignment
| Horizontal alignment | stackAlignment |
|---|---|
horizontal alignment IS choose best | dynamic |
horizontal alignment IS constrain left or right | dynamic |
horizontal alignment IS constrain left | textSymbol |
horizontal alignment IS constrain right | textSymbol |
horizontal alignment IS constrain center | textSymbol |
1.20.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property stackAlignment.
None, not supported for stackAlignment
1.21.0 stackRowLength
A value that limits the number of characters in a row of stacked text.
This length guides the decision on when to break long text strings into separate rows.
The line break will be inserted between words, not in the middle of a word,
so rows may be longer or shorter than the ideal.
Depending on LabelDefinition.stackBreakPosition,
the break may be inserted before the breaking word, or after.
The default value is -1 which means to use a default length. It is currently 13 characters but may vary with feature-geometry in the future.
This property has no effect if LabelDefinition.stackStrategy = LabelStackStrategy.none.
1.21.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
double | -1 | "stackRowLength": 20 |
1.21.2 Property values
| Values | Summary |
|---|---|
-1 | defaults to 13 characters |
GREATER THAN 1 | row length |
1.21.3 Other property relationships
1.21.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property stackRowLength.
Maximum characters per line (all features)
- label class properties -> position options -> fitting strategy properties -> stack -> maximum characters per line
| Maximum characters per line | stackRowLength |
|---|---|
maximum characters per line | stackRowLength |
1.21.5 Standard labeling publishing rules
None, not supported for stackRowLength
1.22.0 stackSeparators
The stack separators that should be used for automatic line breaking of label text.
Each LabelStackSeparator specifies a code point to be looked for in the text.
A code point is often thought of as a single character in the text, but may need
several chars in a String to describe it. So each LabelStackSeparator.separator
is a String intended to describe one code point.
For example:
- To use a comma as a separator, the
LabelStackSeparator.separatorstring would be just ”,” - To use a Hebrew punctuation Paseq as a separator, the
LabelStackSeparator.separatorwould need to encode the code point with utf16 value “\u05c0” if your SDK uses utf16 strings (e.g. C#) or with the utf8 string “\x30\x35\x63\x30” if your SDK uses utf8 strings - To use higher range unicode code points such as Aegean Word Separator Dot which has
utf32 hex value 10101, the
LabelStackSeparator.separatorwould need to encode the code point with utf16 value “\ud800\udd01” if your SDK uses utf16 strings (e.g. C#) or with the utf8 string “\xf0\x90\x84\x81” if your SDK uses utf8 strings.
If it is found, then the LabelStackSeparator also specifies whether:
- The text should always be broken here
- Whether the separator code point should remain visible
- Whether the separator code point should appear at the end of one row, or the beginning of the next
Three default separators are provided: a comma, a space, and a hyphen. Custom separators can be added, and default separators can be removed if not required.
This property has no effect if LabelDefinition.stackStrategy = LabelStackStrategy.none.
1.22.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
MutableArray<LabelStackSeparator> | [",", " ", "-"] | "stackSeparators": [{separator:" ",visible:true,forced:false,breakPosition:"after"}, {separator:";",visible:false,forced:false,breakPosition:"after"}] |
1.22.2 Property values
| Values | Summary |
|---|---|
labelStackSeparator.breakPosition | Gets or sets the position where the separator will be written, if used and remaining visible. |
labelStackSeparator.isForced | Gets or sets a value indicating whether a line break must be inserted when the Separator is encountered. |
isVisible | Gets or sets a value indicating whether the separator should still be visible, if chosen as a line break position. |
separator | Gets or sets a string intended to describe one code point. |
1.22.3 Other property relationships
1.22.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property stackSeparators.
Stacking separators (all features)
- label class properties -> position options -> fitting strategy properties -> stack -> stacking separators
| Stacking separators | stackSeparators |
|---|---|
stacking separators | stackingSeparators |
1.22.5 Standard labeling publishing rules
None, not supported for stackSeparators
1.23.0 stackStrategy
The strategy for whether the text should be stacked or wrapped, rather than placed as long trailing labels across the map.
This property controls whether stacking is allowed, or not,
or should be calculated automatically based on feature type.
The default is LabelStackStrategy.automatic, meaning that
stacking will be enabled for point and polygon features and disabled for line features.
1.23.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelStackStrategy | automatic | "stackLabel": true |
1.23.2 Property values
| Values | Summary |
|---|---|
automatic | Stacking will be enabled for some feature types. |
none | The text should not be broken, no matter how long it is. |
allow | The label placement engine can break the text into two or more rows,if the rows are longer than the LabelDefinition.stackRowLength limit. |
1.23.3 Other property relationships
- 2.8 stackAlignment x stackStrategy
- 2.9 stackRowLength x stackStrategy
- 2.10 stackSeparators x stackStrategy
1.23.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property stackStrategy.
Stack label (all features)
- label class properties -> position options -> fitting strategy properties -> stack -> stack label
| Stack label | stackStrategy |
|---|---|
stack label IS true | allow |
1.23.5 Standard labeling publishing rules
None, not supported for stackStrategy
1.24.0 textLayout
The layout of the text, which can be either horizontal, straight, perpendicular, or follow the line feature.
Optional specification of whether, once the text is positioned, it should be written:
- Horizontally
- Straight (i.e. parallel) to the tangent to the line feature
- Straight in line with the point feature positioning angle
- Perpendicular to the tangent or positioning angle
- following the geometry of the line feature
The default is LabelTextLayout.automatic, which will be interpreted as:
LabelTextLayout.horizontalfor labels attached to point featuresLabelTextLayout.followFeaturefor labels attached to line featuresLabelTextLayout.horizontalfor labels attached to polygon features
1.24.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelTextLayout | automatic | "textLayout":"horizontal" |
1.24.2 Property values
| Values | Summary |
|---|---|
automatic | The text layout will be determined by the individual feature type. |
horizontal | Text will be written horizontally (with respect to the screen). |
perpendicular | Text will be written perpendicular to the LabelTextLayout.straight text layout. |
straight | Text will be written along a straight line, following the point positioning angle or at a tangent to the line feature. |
followFeature | Text will bend to follow a curved or multi-segment line feature. |
1.24.3 Other property relationships
1.24.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property textLayout.
Point layout (point features)
- label class properties -> position options -> placement properties -> rotation -> alignment type
| Point layout | textLayout |
|---|---|
alignment type IS horizontal | horizontal |
alignment type IS straight | straight |
alignment type IS perpendicular | perpendicular |
Line layout (line features)
- label class properties -> position options -> placement properties -> placement
| Line layout | textLayout |
|---|---|
placement IS centered straight | straight |
placement IS centered curved | followFeature |
placement IS centered perpendicular | perpendicular |
placement IS centered horizontal | horizontal |
placement IS offset straight | straight |
placement IS offset curved | followFeature |
placement IS offset perpendicular | perpendicular |
placement IS offset horizontal | horizontal |
Polygon layout (polygon features)
- default
| Polygon layout | textLayout |
|---|---|
default | horizontal |
1.24.5 Standard labeling publishing rules
None, not supported for textLayout
1.25.0 textOrientation
The orientation of the text, which can be either angle direction or screen-oriented. Not supported by 3D scenes.
Optional specification of whether text should follow the placement angle direction
even if it means being rendered upside-down,
or whether text should be flipped through 180 degrees to keep it screen-oriented.
This setting will take effect whenever the feature geometry determines that the text is angled upside-down,
or if the map is rotated within the screen to make the text upside-down
(with respect to the screen).
The default is LabelTextOrientation.automatic,
which is interpreted as LabelTextOrientation.screen.
1.25.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
LabelTextOrientation | automatic | "textOrientation":"direction" |
1.25.2 Property values
| Values | Summary |
|---|---|
automatic | Use the default text orientation (LabelTextOrientation.screen). |
direction | Text follows the placement angle direction, even if it means being drawn upside-down. |
screen | Text follows the screen orientation, and flips if necessary. |
1.25.3 Other property relationships
1.25.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property textOrientation.
Keep label upright (all features)
- label class properties -> position options -> placement properties -> placement -> rotation
| Keep label upright | textOrientation |
|---|---|
keep label upright IS true | direction |
keep label upright IS false | screen |
1.25.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property textOrientation.
default (all features)
- default
| default | textOrientation |
|---|---|
default | page |
1.26.0 textSymbol
The text symbol which describes the overall appearance of label text (e.g. font and size).
If no LabelDefinition.textSymbol has been set, then no labels can be created.
1.26.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
TextSymbol | null | "symbol": {"type": "esriTS", "color": [78,0,78,255], "backgroundColor": null, "borderLineColor": null, "verticalAlignment": "bottom", "horizontalAlignment": "left", "rightToLeft": false, "angle": 0, "xoffset": 0, "yoffset": 0, "font": {"family": "Arial", "size": 12, "style": "normal", "weight": "bold", "decoration": "none"}} |
1.26.2 Property values
| Values | Summary |
|---|---|
backgroundColor | The color for the text symbol background. |
color | The color for the text symbol. |
fontDecoration | The type of font decoration for the text symbol. |
fontFamily | The font family of the text symbol. |
fontStyle | The font style of the text symbol. |
fontWeight | The font weight of the text symbol. |
haloColor | The color for the halo around the text symbol. |
haloWidth | The size of the halo around the text symbol, in DIPs. |
horizontalAlignment | The horizontal alignment of the text symbol. |
kerningEnabled | If kerning needs to be enabled. It is disabled by default. |
outlineColor | The color for the text symbol outline. |
outlineWidth | The width of the text symbol outline, in DIPs. |
size | The font size of the text symbol. |
text | The text of the text symbol. |
verticalAlignment | The vertical alignment of the text symbol. |
1.26.3 Other property relationships
None
1.26.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property textSymbol.
symbol (all features)
- label class properties -> symbol
| symbol | textSymbol |
|---|---|
| exported as CIM, un-editable in ArcGIS SDK |
1.26.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property textSymbol.
symbol (all features)
- label class properties -> symbol
| symbol | textSymbol |
|---|---|
| exported as CIM, un-editable in ArcGIS SDK |
1.27.0 useCodedValues
Specifies whether the data source should translate domain identifiers into meanings using a CodedValueDomain.
For any translation to occur, the data source must have one or more CodedValueDomain s set up
for the attribute fields.
The default value is true i.e. translation will be done.
This property only affects Simple label expressions. Arcade expressions can use functions to specify when code translations should be carried out. Coded value translation for Webmap expressions is not currently supported.
1.27.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
bool | true | "useCodedValues": true |
1.27.2 Property values
| Values | Summary |
|---|---|
boolean | a true or false value |
1.27.3 Other property relationships
None
1.27.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property useCodedValues.
Use coded values (all features)
- label class properties -> class -> label expression -> language
- label class properties -> class -> use coded value descriptions
- label class properties -> class -> label expression -> expression
| Use coded values | useCodedValues |
|---|---|
language IS arcade | false |
language IS NOT arcade | use coded value descriptions value |
1.27.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property useCodedValues.
Use coded values (all features)
- label class properties -> class -> label expression -> language
- label class properties -> class -> use coded value descriptions
- label class properties -> class -> label expression -> expression
| Use coded values | useCodedValues |
|---|---|
language IS arcade | false |
language IS NOT arcade | use coded value descriptions value |
1.28.0 whereClause
A SQL where clause expression that limits the set of features for which labels will be generated and placed.
This is a SQL where clause that can refer to the attributes of the feature. For example:
""(no limitations)"NAME LIKE 'A%'"(Only label features with NAME attribute values starting with ‘A’)"(LENGTH > CAPACITY) and (TYPE = 1)"(Only label features whose attributes satisfy the SQL condition)
The default value is "" which will allow all features in the data source and extent to
be labeled.
1.28.1 Overview
| Data Type | Default Value | JSON Example |
|---|---|---|
String | | "where": "LENGTH > 0" |
1.28.2 Property values
| Values | Summary |
|---|---|
string | a string representation of the where clause query |
1.28.3 Other property relationships
None
1.28.4 Maplex labeling publishing rules
Outlines which Maplex Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property whereClause.
SQL expression (all features)
- label class properties -> class -> SQL query
| SQL expression | whereClause |
|---|---|
new expression | whereClause value |
1.28.5 Standard labeling publishing rules
Outlines which Standard labeling Label class property settings are required to achieve a desired value for the ArcGIS Maps SDKs for Native Apps labeling property whereClause.
SQL expression (all features)
- label class properties -> class -> SQL query
| SQL expression | whereClause |
|---|---|
new expression | whereClause value |
2.0 Label Property relationships
2.1 priority x deconflictionStrategy
IF 'current label priority LESS THAN other overlapping label priority'AND 'current label IS NOT overlapping a barrier feature symbol'AND 'current label IS NOT overlapping an annotation symbol'AND 'current label IS NOT overlapping a dimension symbol' THEN 'place label'
IF 'label priority MORE THAN OR EQUAL to the other overlapping label priority' IF 'deconflictionStrategy IS static' THEN 'label will not be placed'
IF 'deconflictionStrategy IS dynamic' THEN 'label will attempt to move'2.2 priority x removeDuplicatesStrategy
IF 'current label priority LESS THAN other label priority' THEN 'place label'
IF 'current label priority MORE THAN OR EQUAL TO other label priority' IF 'current label removeDuplicatesStrategy IS None' THEN 'place label'
IF 'current label text EQUALS other label text' AND 'other label has been placed' AND 'other label position within current label removeDuplicatesDistance' IF 'current label removeDuplicatesStrategy IS in_Same_Feature_type' AND 'current label featureType EQUALS other label featureType' THEN 'Label will not be placed'
IF 'current label removeDuplicatesStrategy IS in_Same_Label_class' AND 'current label labelClass EQUALS other label labelClass' THEN 'Label will not be placed'
IF 'current label removeDuplicatesStrategy IS all' THEN 'Label will not be placed'
OR THEN 'place label'
OR THEN 'place label'2.3 featureBoundaryOverlapStrategy x deconflictionStrategy
IF 'current label featureBoundaryOverlapStrategy IS allow'AND 'current label overlaps featureBoundary' THEN 'label will be placed'
IF 'current label featureBoundaryOverlapStrategy IS avoid'AND 'current label overlaps featureBoundary' IF 'current label deconflictionStrategy IS static' THEN 'label will be placed'
OR 'current label deconflictionStrategy IS dynamic' THEN 'label will attempt to move, but may still be placed on feature boundary'
IF 'current label featureBoundaryOverlapStrategy IS exclude'AND 'current label overlaps featureBoundary' IF 'current label deconflictionStrategy IS static' THEN 'label will not be placed'
OR 'current label deconflictionStrategy IS dynamic' THEN 'label will attempt to move, but will definitely not be placed on feature boundary'2.4 featureInteriorOverlapStrategy x deconflictionStrategy
IF 'current label featureInteriorOverlapStrategy IS allow'AND 'current label overlaps featureInterior' THEN 'label will be placed'
IF 'current label featureInteriorOverlapStrategy IS avoid'AND 'current label overlaps featureInterior' IF 'current label deconflictionStrategy IS static' THEN 'label will be placed'
OR 'current label deconflictionStrategy IS dynamic' THEN 'label will attempt to move, but may still be placed on feature interior'
IF 'current label featureInteriorOverlapStrategy IS exclude'AND 'current label overlaps featureInterior' IF 'current label deconflictionStrategy IS static' THEN 'label will not be placed'
OR 'current label deconflictionStrategy IS dynamic' THEN 'label will attempt to move, but will definitely not be placed on feature interior'2.5 angle x placement
IF 'placement IS offset from point' THEN 'label position IS calculated from angle'2.6 angle x textLayout x placement
IF 'textLayout IS horizontal' IF 'placement IS offset from point' THEN 'label position IS calculated from angle, and label layout IS horizontal'
OR THEN 'label position IS centered on point, and label layout IS horizontal'
IF 'textLayout IS straight' IF 'placement IS offset from point' THEN 'label position IS calculated from angle, and label layout IS rotated by angle'
OR THEN 'label position IS centered on point, and label layout IS rotated by angle'
IF 'textLayout IS perpendicular' IF 'placement IS offset from point' THEN 'label position IS calculated from angle, and label layout IS rotated by angle + 90'
OR THEN 'label position IS centered on point, and label layout IS rotated by angle + 90'
IF 'textLayout IS followFeature' THEN 'ignore angle'2.7 angle x textOrientation
IF 'label IS rotated upside down' IF 'textOrientation IS set as direction' THEN 'allow upside down label text'
IF 'textOrientation IS set as screen' THEN 'label text will flipped to appear upright'2.8 stackAlignment x stackstrategy
IF 'stackStrategy IS set to none' THEN 'stackAlignment has no effect'2.9 stackRowLength x stackStrategy
IF 'stackStrategy IS set to none' THEN 'stackRowLength has no effect'2.10 stackSeparators x stackStrategy
IF 'stackStrategy IS set to none' THEN 'stackSeparators has no effect'