ThinkGeo.com    |     Documentation    |     Premium Support

MapPrinterPage not correctly drawing layer order

Hi guys,


I just noticed today that layers are not quite drawn in the correct order in the MapPrinterPage. Let's say you have a layer of polygons, a layer of lines and a layer of points. You would expect that if an AreaStyle with a solid fill brush was applied to the polygon layer you would not be able to see points and lines if they were beneath polygons. The points don't show through but the lines do. This is also the case if you send the output to a printer. I am using production release 5.5.0.60.


Just wanted to let you know about this issue.


Thanks,


Steve


 


 


 


 


 



Steven, 
  
   When you use the LineStyle which of the pends do you use, ie the InnerPen, OuterPen or CenterPen?  The reason I ask is that in the drawing system there are drawing levels.  Most things draw on level one except some aspects of lines and labels.  In the case of lines the outer pen draws on level one the inner pen on level 2 and the center pen on level three.  After we call the GeoCanvas.Flush or GeoCanvas.EndDrawing it composites these layers together.  In the case f the label it draws to a very high level called the label level, this is what ensures that labels can be on top of everything.  Anyway to fix your issue you have a few choices.  The first is after each layer draws you call the GeoCanvas.Flush method.  This will cause all of the levels to composite onto the first level.  This can be less performant though should not be slow.  The next thing is that you can use the LineStyle.OuterPen as it will draw on level one with everything else. 
  
 The reasoning behind the drawing levels are to control the effect certain kinds of styles.  For example if you have a road and it is made up of a thick black border and a white interior and you simple draw everything to the same image and draw record by record you would see strange artifacts.  These would be really clear where roads met.  If you are ever interested I could show you what it would look like. 
  
 David

Hi David, 
  
 I have experimented a bit with drawing levels and I thought I had a pretty good understanding of the effects of setting them to 1, 2, 3, 4 or Label Level. My original understanding was that only Label Level draws on top of everything, while the lower levels were for creating special effects by layering. I have been using the default drawing level for line symbols up to now. I just experimented with the Page Layout (Print Preview) function and the only drawing level that does not draw on top of everything (for lines) is Level 1 (in the page layout map). I’m not saying that’s right or wrong, it’s just not what I expected. 
  
 I also noticed that if I create a line using all three pens with the inner pen at thickness 1, center at thickness 2 and outer pen at thickness three, then set the drawing level of all three to 1 it appears to draw correctly in both the ‘main’ map and the ‘page layout’ map. Maybe that will be a viable solution for us. 
  
 Any comments? 
  
 Thanks! 
  
 Steve

Hello Eric, 
  
 Thanks for your further information, I have tested Map1.OnClientDoubleClick property in HowDoISamples, it works fine, double click didn’t raise the zoom funciton any more. 
  
 Map1.OnClientDoubleClick = “test();”; 
  
 and function test() { } in the aspx page, it’s enough, could you please provide your sample, we can help you to reslove this problem. 
  
 Regards, 
  
 Gary