Yesterday, I needed to add an arrow onto the middle of a line, perpendicular to that line. In ArcMap, this can’t be done with line decorations but it can be done via the line labels.
I can’t really show what I was working on but the idea is shown below.
To set this up, turn on labels for the line layer and go into the properties for the line layer.
Hit the symbol button, to get into the label symbol properties (Warning, there are going to be plenty of nested menus here).
Hit edit symbol.
In the advanced text tab, click properties.
Change the type dropdown to marker text background.
Click symbol and choose the symbol you want to appear on the line. Click ok.
Notice the marker symbol is behind the label text in the preview.
Go to the general tab and change the color to no color. Click ok.
In the layer properties label tab, the text symbol preview should now show only the symbol that has been set in the background.
Click expression, and enter “.” for the expression. This can really be anything but a single . will give the label a very small footprint in terms of label weights and label buffer rules.
Hit ok, then click label properties (if maplex isn’t on, go turn it on before the next steps).
In the label position tab, choose Regular placement and click the position button.
Choose offset straight.
Hit ok, then in click the Label offset button.
This is the important part, for this label, I want the symbol offset above the line slightly, so it’s set to 1pt offset above the line. The offset along the line is important, since I want the symbol to be in the middle of the line. Choose along the line from start, measure to center of label and enter 50 and change the unit to % of line length. The tolerance can be useful if the lines are dense, it will allow some shift so more labels are placed. I also choose line direction because in this instance it’s important that the symbol be oriented to the line direction.
Hit ok, in the fitting strategy tab, uncheck everything.
In the label density tab, keep all the defaults.
In the conflict resolution tab, I’ve checked never remove, but it depends on the situation.
My example looks like this.
Note that if the labels need additional labels, like an ID or name, an addition label class can be set up to label the ID/name in addition to these symbol labels.