ThinkGeo.com    |     Documentation    |     Premium Support

Label Placement Questions

Is there any way to combine 'BestPlacement' and 'AllowOverlapping'?


Example:



ts = new TextStyle("[lt_abbr] [WATTS]", new GeoFont("Arial", _fontSize),new GeoSolidBrush(GeoColor.StandardColors.Black));

ts.PointPlacement = PointPlacement.UpperRight;

ts.OverlappingRule = LabelOverlappingRule.AllowOverlapping;

ts.DuplicateRule = LabelDuplicateRule.UnlimitedDuplicateLabels;

ts.BestPlacement = true;



So, what I'd like is the following logic:



        
  1. If there's no label collision, print label in Upper Right

  2.     
  3. If POSSIBLE, use best fit logic to avoid label overlap

  4.     
  5. If impossible, print label anyway (preferrably in area of least overlap, but in default placement if needed)


What I'm seeing, instead, is that if I turn on the 'Allow Overlapping', the best placement is ignored even in a location where it would've worked had best placement been turned on.  But if I turn OFF allow overlapping, some of my labels disappear..  I want ALL labels to show up, with as little overlapping as possible.


All labels are on the same overlay (MapPrinterOverlay) but on different ShapeFileFeatureLayers...


Any help/thoughts are appreciated.


Thanx!



As an addition to this…  Is there any way to use something like SimpleMarkerOverlay in conjunction with the MapPrinterLayer to be able to drag the labels created by the shape files into new locations?  For tweaking after ‘best placement’ does its thing? 
  
 Thanx!

Jason,


 I think that you hit on a very relevant theme we have at ThinkGeo which is to work on a new labeling system that would be a significant improvement over what we currently have. We have a topic in our Enhancement Tracker, called "Improve label placement algorithm", you can vote it up but the new labeling system would go beyond that and would look at all the labeling standards in cartography. Actually, labeling is a sin that affects most map controls out there because it tend to be neglected over other pieces of functionality deemed more important. Labeling is also a very complicated and intricate. It is arguably the most difficult part of mapping combining logic with art. As a GIS person, I always believed that this should get a higher priority but I don't get to make all the decisions at ThinkGeo. In the meantime, you can help me and vote up the topic "Improve label placement algorithm" in the Enhancement Tracker helpdesk.thinkgeo.com/EnhancementTracker


My response to you to your immediate labeling problem is that there is no way to set the labeling properties to behave the way that you describe. Map Suite is extensible enought so that you can write your own labeling logic but that would be a lot of work. We have some samples in the ThinkGeo Wiki that show how to extend Label Styles wiki.thinkgeo.com/wiki/Map_Suite_Wp...ng_Samples. It shows some pretty useful scenario but nothing to the level of what you are describing.


 Note that we have a sample Draggable Labelswiki.thinkgeo.com/wiki/Map_S...ble_Labels that pretty much responds to your second posts but this is in the Wpf edition.


 I hope I gave a good background on the labeling situation at ThinkGeo and in the mapping world in general. Keep in mind that we are always listening to our customers and we would be happy to work on your specific labeling needs. Thank you.


 



Thanx, Val. 
  
 I agree that labeling is NOT trivial, especially in any sort of automated fashion.  I was hoping I had just missed something.  :) 
  
 I’ll give the Draggable Labels project another shot, but sometimes find it difficult to relate the example projects to shape files and the MapPrinterLayer functionality… 
  
 Thanx.

Jason,


  Thank you for your understanding. The Draggable Labels project needs to be looked at separtely from the printing functionality. You do the dragging of the labels on a normal map and then you go to MapPrinterLayer.