ThinkGeo.com    |     Documentation    |     Premium Support

Styles, automatically generate corresponding legend?

Hello,



After reading the forum since few months I wonder if Map Suite Desktop Edition is the right solution to quickly create a project analyzing geographic custom data (lots of representation with different styles) with the legend to explain.



I am sure it's possible to make legends like the attached example, but I am surprised that this type of object doesn't exist.

I tried the class 'LegendAdornmentLayer', but it seems that it does not draw the legend for styles like Class Breaks or DotDensity rendering, and unfortunately I did not have much time to devote to study classes ThinkGeo.



Is there a way to automatically generate corresponding legend from styles applied on the map ?

Or is there a complete sample to draw each type of style ?


Thank you for help.



Styles_Legend.pdf (116 KB)

Eric: 
  
 Take a look at the Map Suite Desktop Edition sample LegendAdornmentLayer: 
  
 Elisa 


Thank you Elisa



 I tried the class 'LegendAdornmentLayer', but it seems that it does not draw the legend for styles like Class Breaks or DotDensity rendering




 


Elisa, thanks for your sharing.
 
Eric,
 
Currently we have just added the ability for the LegendAdornmentLayer, you can use it directly after you get the latest version of Desktop edition, the attachment is the sample application, there are two things need to notice:
 
1, For the legend of this sample, you need to set the Image and Text property for each style and other optional properties to make it look better, here is the code below:
 
  LegendItem item1 = new LegendItem();
            item1.Image = new GeoImage(@"YourData\legend1.jpg");
            item1.Text = "LegendItem1";
            item1.ImageTopPadding = 10;
            item1.ImageLeftPadding = 10;
            item1.TextFont = new GeoFont("Tahoma", 10);
            item1.TextSolidBrush = new GeoSolidBrush(GeoColor.SimpleColors.BrightRed);
            item1.TextTopPadding = 10;
            item1.TextLeftPadding = 10;
            item1.ImageMask = new AreaStyle(new GeoPen(GeoColor.SimpleColors.BrightBlue));
            item1.TextMask = new AreaStyle(new GeoPen(GeoColor.SimpleColors.DarkOrange));
            item1.TopPadding = 10;
            item1.LeftPadding = 10;
            item1.ImageBottomPadding = 10;
            item1.ImageRightPadding = 10;
            item1.TextBottomPadding = 10;
            item1.TextRightPadding = 10;

 
According to the code above, you can realize the LegendItem object is for an item on the legend, you can set these properties for the legend item so that it can display correctly. So you need to make your own pictures for all of your class break styles and reference them.
 
2, I didn’t attach the countries02.shp because of the size limitation of discussion forum, so you need to copy the countries02.shp and related files to the data folder.
 
If you have any questions when using this sample please let us know again,
 
Thanks,
 
James

LegendAdornmentLayer.zip (132 KB)

James thank you for your help.


I can not find where the class LegendItem is referenced (MapSuite Desktop 4.5.0.0 - assemblies MapSuiteCore & DesktopEdition).

Please, can you help me?



Eric, 
  
 The latest version of DesktopEdition is 4.5.121.0, please get it from the DailyBuild of development branch and reference it in the attached sample application, 
  
 If you still have any more questions please let us know, 
  
 Thanks, 
  
 Scott,

Scott thank you for this information, I did not know the service DailyBuild.


 Now the sample works correctly.

 It is a big change for me, but there is still much work ... I hope that developments will continue to offer a fully automatic default legend depending on the layers styles


 thank you again

 



Eric, 
  
 Thanks for your suggestions, for the current legend implemention, it is flexible and easy to customize your own legend, but we also will consider your suggestion and add it to our list, maybe we will implement it to the products for the next public release. 
  
 Thanks, 
  
 Scott,