ThinkGeo.com    |     Documentation    |     Premium Support

Creating physical map

I am working a company on creating a physical map based on what the user sees on the screen.



The company wishes that it keep an aspect ratio for an 11x17 map.   Is that something that I need to code for or is the ratio already taken care of?  My map is 100% for both height and width, and there is no "gray space".   


Thanks for your time.



Hello Chad, 
  
 What do you mean physical map? You want to cache the map to images? 
  
 If so, you can set the map.width and map.height follow the ratio of 11:17, and set the tile width and height to 11 and 17, then all the tiles will follow this ratio and without gray space. 
  
 Let me know if I misunderstanding something. 
  
 Regards, 
  
 Gary

Physical map, as in one you roll up and take with you.  
  
 The company wants me to create a process where the user can click a button and send the "map info" of the viewable map to them so that they can create physical maps, including the features (which I am saving and sending as shape files, hence my other forum question).   
  
 Sort of similar to this: mytopo.com/search.cfm.  However I am going to be using ThinkGeo if I can get it to work.

Hello Chad, 
  
 I see, so the key part is get the current viewable map, I think we have two way can fit your requirements, one is export to the pdf, the other is directly save to an image. 
  
 Which one do you want? 
  
 Regards, 
  
 Gary

Gary, 
  
 No what I am going to do is send him the coordinates for the map, then create shape files for the layers markers etc. 
  
 If you go to that site I shared, it has this “bounding box” where it shows you what you will get in the map.  I am trying to figure out how to do that with ThinkGeo.  I can get from what the user sees on the screen, but I don’t know how to show them what they will actual get, which is the 11x17 aspect ratio.

Hi Chad,


Let's assume the user is viewing a countries02.shp file from our sample in a web page, and current boundingBox is "currentBoundingBox", now the user clicks a button, we can make the currentBoundingBox.Width as the base width, and the new height is currentBoundingBox.Width * 11 / 17, and the center point is the currentBoundingBox.GetCenterPoint(), here we get the new boundingBox which is what the user wants, then you can use the following code to get the image,



            Bitmap bitmap = new Bitmap(110,170);//or other values which are 11 * 17.
            GdiPlusGeoCanvas canvas = new GdiPlusGeoCanvas();
            canvas.BeginDrawing(bitmap,newBoundingBox, mapUnit); // newBoundingBox is the value we get from the user click in my description above, mapunit is the shape file's map unit.

            ShapeFileFeatureLayer layer = new ShapeFileFeatureLayer(@"Countries02.shp");
            layer.Open();
            layer.Draw(canvas, new Collection<SimpleCandidate>());
            layer.Close();

            canvas.EndDrawing();

And the information has been drawn on the bitmap.


Hope it helps you,


Edgar