Forcing label items to remain on the same line

8340
12
Jump to solution
07-14-2017 07:45 AM
deleted-user-hwcOLD4Ux5CR
New Contributor II

Hi all,

I'm new to working with label expressions in ArcGIS Pro and I was hoping for some help. The expression I'm working with is as follows (VBScript):

[full_name] + " (Z:" & [zone] & " R:" & [rank_id] &")"

I realize my syntax and labeling structure is messy, but it's been getting the job done. The label is displaying a client name followed by their zone and rank numbers in parenthesis. Example: ExampleName (Z:1 R:10) The problem I'm having occurs when a longer client name forces what I have in parenthesis on to two different lines when I have label stacking enabled.

Is there a way to ensure that my information inside the parenthesis always stays together on the same line?

Any help is appreciated!

0 Kudos
1 Solution

Accepted Solutions
MervynLotter
Occasional Contributor III

A less elegant option (without code) would be to simply change the label engine from Maplex to Standard Label Engine by un-selecting the Use Maplex Label Engine under the more options.

This should ensure all labels are on one line.

View solution in original post

12 Replies
MervynLotter
Occasional Contributor III

A less elegant option (without code) would be to simply change the label engine from Maplex to Standard Label Engine by un-selecting the Use Maplex Label Engine under the more options.

This should ensure all labels are on one line.

deleted-user-hwcOLD4Ux5CR
New Contributor II

This seems to be solved my issue:

I turned off Maplex Label Engine and added \n before my parenthesis to push this portion onto to the second line. [full_name] + "\n (Z:" & [zone] & " R:" & [rank_id] &")"

There must be a way to format this in Maplex, but using a line break was creating too large of a break for my desired label appearance. For now, the less elegant option does the job.

CiaraRowland-Simms
Esri Contributor

Hi Brandon,

This problem may no longer be relevant for you, but just in case it is: the issue is that maplex has the option to specify stacking characters, and the space character is a stacking separator by default, so it splits on any space it sees fit. 

You could remove the space as a stacking separator and choose an open bracket character for example, with visibility on and split after checked off.

However, this won't help you if you still want it to stack on space characters in other parts of your expression. For that, you can use non-breaking space characters.

You can replace regular spaces in part of your expression with non-breaking space character (U+00A0). For example:

$feature.full_name + " (Z:" + $feature.zone + "\u00A0" + "R:"+ $feature.rank_id +")"‍‍

Or if you have regular spaces in your fields and don't want them to stack, you could find and replace them with nbsp in a section:

$feature.full_name+ " " + replace("(Z:" + $feature.zone + " R:"+ $feature.rank_id +")", " ", "\u00A0")

Maplex will not split on these non breaking space characters.

Or as a third option, you can hard code your new line character, and disabling stacking as a fitting strategy

$feature.full_name + TextFormatting.Newline + "(Z:" + $feature.zone + " R:"+ $feature.rank_id +")"‍‍‍‍‍‍

All the examples above are using Arcade, but will work just as well in any other parser. For VBScript make sure you use + vbnewline + instead of TextFormatting.Newline to ensure you have the correct type of line feed character.

Hope that helps!

Ciara

by Anonymous User
Not applicable

Hi @CiaraRowland-Simms , if I disable stacking my label does not use the TextFormatting.Newline? Maybe a bug? I'm using Pro 2.9.3.

AndreaB_0-1661956149929.png

AndreaB_1-1661956188566.png

 

 

CiaraRowland-Simms
Esri Contributor

Hi @Anonymous User,

Would you be able to send over what placement strategy you have on this label?  Or send the layer file for me to take a look? Some types such as street labeling and contour deliberately ignore any new lines in the expression, so I'm wondering if you might be using one of those.

All the best,

Ciara

0 Kudos
by Anonymous User
Not applicable

Hi @CiaraRowland-Simms, here are the screenshots of the label position tabs.

AndreaB_0-1662049581251.png

AndreaB_1-1662049617193.png

AndreaB_2-1662049639265.png

Let me know if that helps.

Thank you!

 

0 Kudos
CiaraRowland-Simms
Esri Contributor

Hi @Anonymous User ,

Thanks that's great! My suspicion based on those properties is that Never remove (place overlapping) on the Conflict Resolution tab is causing the issue. That property is really a last resort to get text on the map when there isn't enough room. Would you be able to see if turning it off resolves your stacking issue?
Ciara

0 Kudos
by Anonymous User
Not applicable

Hi @CiaraRowland-Simms , no that didn't change it. It works for some of the labels but not this one. 

AndreaB_0-1662062452320.png

 

0 Kudos
SamuelTroth2
Esri Contributor

Hi @Anonymous User,

Looks like this is a bug in ArcGIS Pro. There's no reason that you should need the stacking property enabled for your stacking expression to work correctly. I have logged this as an issue for us to investigate. It seems to be linked to the 'Secondary offset' property, if you could find a way not to use that in your map that may be a viable workaround. 

I'm very sorry Maplex isn't performing as you would hope. Please get in touch if you have any more questions.