ThinkGeo.com    |     Documentation    |     Premium Support

Label Rendering Priority

Hi,


We use the approach outlined in the "Label Nice Looking Roads" sample so that all of our shapes are rendered as multiple tiles, whilst all the labels are rendered as a single tile overlaid on top. Each road class and settlement class is in a separate layer, so we don't use values to determine appearance - everything is done using the default styles for the layer.


My question is whether there is a way to set the priority for label rendering, i.e. I would like the labels for larger settlements to be rendered over those for smaller settlements, so you would always see the name of a city but the names of any smaller towns nearby would only be rendered if there is enough space. At the moment I often see the names of smaller towns being rendered but not the name of the city, even though the point representing the city is shown.


I've tried changing the order that layers are added into the overlay, but that doesn't seem to make any difference. Is it possible to prioritise the rendering of labels for certain layers in an overlay?


Best regards,


Gary


 


 



Gary, 
  
   The labels are rendered in the order of their drawing.  So in this case we suggest that you draw the features separately from the label layers.  The label layers that draw first have the priority over the ones that draw after them.  The key is that in the Draw method we pass in labels that have already been drawn.  If the large citied draw first there are no collisions.  Then when the small cities draw next they may collide with large cities labels and they may be suppressed.  So for labeling draw the most important label layers first.  One other thing is that you may want to set the GridSize of the important layers to be smaller so more possible labels will label.  The grid size tell the layer how many total labels you want on the screen, I mean one per grid.  Try setting it to 10 or so. 
  
 Example:  You have three files.  Roads, Small Cities, Large Cities 
  
 1. Render the features without labels first.  In order like Roads, Small Cities, Large Cities 
  
 2. Render the features as labels in this order: Large Cities, Small Cities, Roads. 
  
 In this way you will actually have 6 layers.  Three layers with area and line styles and three that have text styles. 
  
 I hope this is clear, feel free to ask for clarification.  We can also put together a sample for you. 
  
 David

Hi David, 
  
 Thanks for your reply - I’ve been on vacation and have only just been able to pick this up again. 
  
 You’re absolutely right - it does depend on the order of their drawing. I hadn’t seen this behaviour due to a configuration issue at my end. I’ve corrected that and it’s now working as expected. 
  
 Many thanks, 
  
 Gary

Gary, 
  
   Glad you were able to get it working correctly.  Just let us know if you have any more questions. 
  
 David