ThinkGeo.com    |     Documentation    |     Premium Support

Problem setting width on LegendAdornmentLayer

 I am having an issue with the LegendAdornmentLayer with the MVC edition.


I am using version 6.0.0.271 of both the MapSuiteCore.dll and MvcEdition.dll.


The issue i am having is I have a couple of legend items where the text is to long to fit in the default width of the legend.


When i change the LegendAdornmentLayer.width, the width changes, but the text and images scale with it, still cutting the legend item text off at the same place.


I saw a similar forum post gis.thinkgeo.com/Support/Dis...fault.aspx


but it was on the LegendPrinterLayer and it was solved by version 6.0.0.127.


I am really stuck at this point, so any assistance would be great.


Thanks


Rick Jones



 Hi Rick,


 
Thanks for your posts but sorry that the LegendAdornmentLayer didn’t support the adaptation automatically any more, Once you have set the adornmentlayer's width and length, the legend items which are in adornmentlayer would be never out of the range, or it would be cut off if the text is too long.
 
If we would like to make sure the text isn't be cut off, I guess you can try splitting the text into multi-line with “\r\n”. Or change the text font to make it smaller to fit the current legend item.
 
Besides, I'm not sure whether you are using the AdornmentOverlay? If yes, can you change to LayerOverlay and set its tiletype as singletile and IsBaseOverlay as false, because we have a known bug for AdornmentOvelray now. The code looks like below. Sorry for any inconvenient. 
 
            LayerOverlay adornmentOverlay = new LayerOverlay();
            adornmentOverlay.TileType = TileType.SingleTile;
            adornmentOverlay.IsBaseOverlay = false;
            adornmentOverlay.Layers.Add(legendLayer);
            map.CustomOverlays.Add(adornmentOverlay);
 
if any problems, please feel free to let us know.
Regards,
Johnny

 I am not using the AdornmentOverlay on the map as it disappears when panning , so I am already adding my adornment layer to the custom overlays collection


I do not fully understand what is ment by 



set the adornmentlayer's width and length, the legend items which are in adornmentlayer would be never out of the range, or it would be cut off if the text is too long.



Are you saying, that we are unable to change the width to support the longer text?


Rick


 



Hi Rick, 
  
 I think this should be a problem in LegendAdornmentLayer, our development team is focusing on these issues these days, I have submit it to them, I will update the progress on it here once I get an update from them. Really sorry for the inconvenience. 
  
 Currently, can you use the workaround that "try displaying the long text with multi-line by using "\r\n" " to make it work temporarily? Additionally, can you get the latest development version "6.0.297.0" or later from the "customer potral" to get some bugs fixed about LegendAdormentLayer? All are mentioned at gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/21/aft/11089/afv/topic/Default.aspx
  
 Regards, 
 Johnny


 I was able to find the root cause of the issue and implement a work around.


The root cause is in the LegendItem DrawCore


For some reason the drawcore was creating its own font to use instead of the font i set, and set the font height to some arbitrary value of the adornmentGeoCanvas.Width / 19.2


There was also some sort of factor being calculated using adornmentGeoCanvas.Width/192 and used to set the Image Width and height instead of the width and height i set.


This is what is causing the legend to scale when I changed the width.


I think, the legend, and legendItem should honor the fonts and widths that I specify I want to use and not arbitrarily override them.


If you are going to override them, then the api should not let us set them to begin with.


The workaround I did was to create my own legend item derived from LegendItem and override the DrawCore so it used the font and other settings i had defined for the legend item.


Oh, this was using the 6.0.0.305 of the MVC version.


Rick


 


 




 



Hi Rick, 
  
 Thanks for your Information and it has been fixed now, please get the latest version (6.0.0.306) or later. 
 Note: the latest version is building package, please waiting for a several hours. 
  
 Besides, I think the development version (6.0.306.0) works fine, you might check it firstly and then have a try. 
  
 If any problems, please feel free to let us know. 
  
 Thanks 
 Johnny

Hi Jonny:



We are facing a legend cut off on the top of the legend since we upgrade to ThinkGeo 9.0.  We are using the ASP.Net MVC version.



It works fine in Version 7 and 8.



Please see attached screenshot for details.



Thanks,

Adrian

 

001_LegendError.jpg (21.4 KB)

Hi Johnny:



Please discard the previous post since I have fixed it with a YffsetPixel of 10.



Here is the main one we are facing.  When print the LegendAdornmentLayer, it is transparent so the label in the map showing up.  Please let us know how to fix it?  Please see attached print out for details.



Thanks,

Adrian 

LegendTransparentInPrinting.png (55 KB)

Hi Adrian, 
  
 I am glad to hear you solved the first issue. For your new question I remembered guangming met that before: thinkgeo.com/forums/MapSuite/tabid/143/aft/12669/Default.aspx. It looks he solved that by use LegendPrinterLayer, and in our printing sample, the legend shows above map. 
  
 Could you please see that topic for detail and see whether that’s helpful? 
  
 Regards, 
  
 Don

Hi Don:



Thanks for your reply. What I did using the YOffsetInPixel is just a work around.  The real issue is that the coordinates that AdornmentLocation.UpperRight calculated is off little bit so cause the cut off issue.  I am hoping that you can fix that in your future release.



In term of the transparent issue, we did LegendPrinterLayer to overcome the transparetncy but the legend location is manually hard coded values. Not like the enum as in the AdornmentLocation.UpperRight. Again it is a workaround not the elegant way of handling things.  I am hoping that if you fix the transparent issue then we should use the above "Normal way" to handle the legend printing and display and they will be consistent and elegant.



Thanks,

Adrian





Hi Adrian,  
  
 I am sorry some of our printing layer cannot work just like it rendered on map, I think our developer will keep work for them and enhancement that. 
  
 Because some reason, the printing system is not the same like map render system, so there maybe some other issue, if you met any problem please let us know, we will try to provide workaround for it now and fix that in future. 
  
 Regards, 
  
 Don