ThinkGeo.com    |     Documentation    |     Premium Support

Problems with LegendPrinterLayer

Hello guys,


I have been working for some time to configure the LegendPrinterLayer for use with the Print Preview system. I am having trouble understanding exactly how it is supposed to work. Each LegendItem has TopPadding and ImageTopPadding and TextTopPadding as well as padding for Left, Right and Bottom. But when I apply a BackgroundMask (so I can see the size and shape of each LegendItem) there is space between the LegendItems even though TopPadding and BottomPadding is set to 0.


Why is this? 


Also, when I set the image size to some size (say 12 X 12) it gets larger when I programmatically make the legend wider. If a legend item has a very long text and you make the legend wide enough to contain it the images get very large AND the space between the legned items increases.


As an excersize in understanding how the legend is supposed to work I wrote a project that simply adds a legend and allows me to change all of its properties and then apply them. I have attached the project.


Would it be possible to provide some general instructions and guidelines (possible even a video) on how to use the LegendPrinterLayer?


Thanks!


Steve



001_LegendSizeTest.zip (46.3 KB)


Hi Steven,


Thanks for your posts and detailed description, which did help us a lot for understanding the problem. And please check the answers as following:


1. To make sure the LegendItems looks better, we did some calculations in the code and added some spaces between each LegendItems, even if the TopPadding and BottomPadding is set to 0. Can you let me know your requirement here? I guess we may do some changes here.


2. The size of each item, including image, text etc. changes following the width of the legend. In other words, if you change the width of the legend, the size of all the legend items will be re-calculated again.


3. Here is a introduction on “Printing System”, including the demos and a detailed video, please check it out at wiki.thinkgeo.com/wiki/Map_S...creenshots , the series name is “Printing System Introduction”.


 


Sorry for the inconvenience and hope my reply is helpful for you. 


 


Thanks,


Johnny




Hi Johnny,



Thanks for your reply. My biggest problem is creating the initial legend from code so that the width of the legend is wide enough to contain the width of the symbol plus the width of the text. So if  I have a legend title and several legend items and I know the font size I need to be able to compute the initial width and height of the legend layer. However, I have noticed that the wider the inititial size of the legend layer the larger the symbols (images) to the left of the text, regardless of the width I set. The text size remains the same regardless of the initial size of the legend. That means if I want to make a wider legend I have to set the image width to a smaller value to keep the image from getting way too big (setting image height does not seem to have any effect, only width). So the behavior of the image and the behavior of the text, when creating the legend, is not consistent. 


Once the legend is created and the legend layer is dragged to a different size both the images and the text resize accoriding to the width of the legend.


So: How do you calculate the initial size and width of the legend?


Thanks!


Steve



 Hi Steven,


 
It's proved to be a bug in LegendPrinterlayer, we are trying to fix it now. Maybe it needs some time, sorry for the inconvenience.
 
We did some changes to demo you provided, and make legend long enough to contain all the LegendItems. Please check out the sample in the attachment. Also we did some enhancements to LegendPrinterLayer, if you would like to try, please get the latest "Development" version 6.0.297.0 or later and have a try.
 
Thanks,
 

002_001_LegendSizeTest.zip (52 KB)

 Hi Steven,


 
It's proved to be a bug in LegendPrinterlayer, we are trying to fix it now. Maybe it needs some time, sorry for the inconvenience.
 
We did some changes to demo you provided, and make legend long enough to contain all the LegendItems. Please check out the sample in the attachment. Also we did some enhancements to LegendPrinterLayer, if you would like to try, please get the latest "Development" version 6.0.297.0 or later and have a try.
 
Thanks,
Johnny

003_002_001_LegendSizeTest.zip (52 KB)

Johnny, 
  
 I see the change you made to wrap the long text, reducing the overall width of the LegendItem (and the LegendLayer). Also it looks like in version 6.0.297.0 the LegendItem width is being adjusted according to the width of the text. But it looks like the final solution might be to cause the image width and height to behave like the text.  
  
 It appears that when the LegendLayer is first created that the font size of the text remains at the size you choose.  The image height and width appear to get progressively larger the wider the initial size of the LegendLayer (though if you check the properties they always return the same). Once the legend layer is originally created and is re-sized using the mouse it works OK. 
  
 Am I thinking about this correctly. 
  
 Thanks again for your help! 
  
 Steve     


Hi Steven, 
  
 I guess what you have mentioned are just what we are doing, except the items shown below: 
  
 1. The size of image and text is determined by the width of the legend, the wider the legend is, the bigger the size of image and text is. And vice versa. 
 2. The width of the legend item is determined by the width of the image and text, image left padding, image right padding, text left padding and text right padding. 
  
 Hope it 's clear enough, we are still working on the issues of it. Any progress i will update it here. 
  
 Regards, 
 Johnny

Hi Steven,


Thanks for your sample, we've fixed this, please get the 6.0.303.0 and have a try. Here is the result now.



Regards,


Edgar



Hi Edgar, 
  
 Thanks very much for the improvement. The LegendLayer is working much better. Now it looks like it does not matter (much) what you set as LegendItem.Width. Apparently the LegendItem width is now being adjusted to contain the width of the image and text. This is fine, less work for me. 
  
 However, in the screenshot you provided in your previous post, there is too much white space between the last legend item and the bottom of the legend. It is not possible to adjust (in code) the height of the legend so that there is not much white space between the last legend item and the bottom of the legend. If you try to reduce the height of the legend for a better appearance the last legend item will wrap and appear next to the first legend item. And when this wrapping happens it is clear that the width of the legend item that wraps is no longer being managed correctly as it is much wider than it needs to be. 
  
 You should be able to see this using my sample. Can this be improved? 
  
 Thanks again for help with this issue! 
  
 Steve

Hi Steven,


 
The enhancements have been done, can you get the latest version 6.0.305.0 or later to have a try ( maybe it's still in daily building now, please wait for hours). Following is the screenshot we got:

 
Regards,
Johnny

Johnny, 
  
 You guys are awesome! LegendPrinterLayer works much better now and is to the point where we can use it to make a nice map. 
  
 I notice you have added automatic wrapping to the LegendPrinterLayer so that if you use the mouse to re-size the legend and it is not tall enough to contain the legend items they wrap to the next ‘column’. I don’t know if the intention is to create the capability of having a multi-column legend or if it’s just a side effect. If the intent is to be able to have a multi-column legend it doesn’t quite work, since once you shorten the legend to cause the legend items to wrap it is impossible to drag the legend wide enough to contain the legend items. 
  
 No problem, I’m sure there will be more refinements in the future. Thanks for you help with this issue! 
  
 Steve

Hi Steven, 
  
 Glad to hear that it works for you now and thanks for the “multi-column” issue, I have entered it to our internal issue tracking system, sorry that we don’t have enough resource for it now, but if any workable items avaiable, I will let you know here. 
  
 Thanks, 
 Johnny

In my early project, I failed to set image size as desired. Just need a solution to balance the width of legend and image. Then, I just followed as stated, it’s getting better. Many thx!



Best regards,

Susanna



Hi Susanna, 
  
 We are happy to hear those improvements help you. 
 If any more questions, don’t be hesitate to let us know. 
  
 Thanks, 
 Troy