ThinkGeo.com    |     Blog    |     Wiki    |     Support

Printing a Map 101

I just watched the video on printing and it really is overkill for what I need.  I just want to send the current contents of my WinFormsMap (which the user already has done a bunch of queries, etc. to build) to the printer (in landscape), or save it as a PDF.


I really don't want to have to start over and build a bunch of new special printlayers to do that if I don't have to....  So is there an easier way to print a Map?


bob



Hi Bob, 
  
 Do you mean that you want to print the map without any new queries to the data? If so, sorry to tell you it’s not possible because the contents on the map are drawn on a GeoCanvas and it needs a redrawing to the e.g. PdfDocument when saving it to a PDF cause some features should be vector. So if you are using something like the SQL layer, a better way is storing the queried features to an InMemoryFeatureLayer, the performance would be better when printing. 
  
 Regards, 
  
 Edgar

You are right.  I didn't want to have to requery/redraw the Map.  So let's explore other options.  Can I take the Layers I already have and also add them to a printer layer, and then just call the code to print the printerlayer?  Or do I have to rebuild the layers from scratch?  I have three layers (WorldMapKitWmsDesktopOveray, a SimpleMarkerOverLay, and a InMemoryFeatureLayer).


bob



That is how it works: add layers to printerlayer, and then print the printer layer, the requery is needed but you don’t need to control it cause it is doing in our code. And what do you mean by rebuild the layers from scratch? 
  
 Thanks, 
  
 Edgar

Well,  I already have the layers built in the original map, so I wondered if it could build the printerlayers by just adding the existing layers, but I’m having all sorts of problems when I try to zoom, etc.  I’m guessing I’m going to have to build the layer over again because of the size definitions, i.e., meters vs. feet? 
  
 Also, how do I add Markers to the printerlayer? 
  
 bob

Oh, I see, but the layers have to be rebuilt when zooming, etc. like the normal map. In the printer sample, there are two kind of zooms: 
 1), map’s zooming, this one will not cause the requerying of the map layers, but the image would be fuzzy when zooming in. 
 2), map layers’ zooming, the one will cause the requerying of the map layers, and the image is clear. 
  
 You can have a look at the two zooms to see what is different. 
  
 About the markers, I think the markers won’t work properly in the printing map, in the normal map. the markerOverlay and the map layers are at the same levels, they will match perfectly whatever you zoom, pan etc., but in the printing map, the map layers are in a MapPrinterLayer, the MapPrinterLayer acts like the normal layer in a normal map, that means the map layers are not directly on the map and they are not at the same level with markerOverlay, so we suggest you to use a point Shape instead of a marker, and give the point shape layer a image style. 
  
 Hope it helps, 
  
 Edgar