ThinkGeo.com    |     Documentation    |     Premium Support

Map Suit Image Zoom Problem

Hello 


please solve my problem


when i take image from map using this code


    Bitmap bmp = null;

       bmp = MainMap.GetBitmap();

       bmp.Save(Server.MapPath("temp/test.png"));.


it take test image with full zoom 


but i need a image like image2 please see the attachment.



Image.zip (57.3 KB)

Hi Ibrar, 
  
 I build an image by your code and it looks map print correct, so does your "full zoom" means without something like trackZoomBar and logo? 
  
 Regards, 
  
 Don

Hello Don


thx for reply


please see the attachment when i take iamge from above code the starting and ending point not in image i want toinclude starting and ending point also.


 



Hi Ibrar, 
  
 I think i understand your requirement. Are you using marker for the two points? 
  
 Regards, 
  
 Don

hello Don


yes i m using marker and marker code is


 




     InMemoryFeatureLayer routingExtentLayer = new InMemoryFeatureLayer();

        routingExtentLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = new AreaStyle(new GeoPen(GeoColor.SimpleColors.Green));

        routingExtentLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

        routingExtentLayer.InternalFeatures.Add(new Feature(new RectangleShape(-87.9, 15, -83, 9.8)));

        MainMap.DynamicOverlay.Layers.Add("RoutingExtentLayer", routingExtentLayer);



   

        InMemoryFeatureLayer newRoutingLayer = new InMemoryFeatureLayer();

        newRoutingLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = new LineStyle(new GeoPen(GeoColor.FromArgb(160, GeoColor.SimpleColors.Blue), 4));

        newRoutingLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

        MainMap.DynamicOverlay.Layers.Add("NewRoutingLayer", newRoutingLayer);



        InMemoryMarkerOverlay routeStart = new InMemoryMarkerOverlay("RouteStart");

        routeStart.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = new WebImage("images/dd-start.png", 20, 34, -10f, -34f);

        routeStart.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

        MainMap.CustomOverlays.Add(routeStart);



        InMemoryMarkerOverlay routeEnd = new InMemoryMarkerOverlay("RouteEnd");

        routeEnd.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = new WebImage("images/dd-end.png", 20, 34, -10f, -34f);

        routeEnd.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

        MainMap.CustomOverlays.Add(routeEnd);


 


 



Hi Ibrar,  
  
 Sorry your code works well in my test project. 
  
 But if you only want to print the image, here we have a workaround. 
  
 You can try this code: 
  
  
 Bitmap bmp = null;
            BaseShape savedExtent = Map1.CurrentExtent.CloneDeep();
            Map1.CurrentExtent.ScaleUp(50); // you can change this value
            bmp = Map1.GetBitmap();            
            bmp.Save(@"D:/test.png");
            Map1.CurrentExtent = (RectangleShape)savedExtent;
 
  
 You can change the 50(percentage) to a suitable value, so that you will get a better screen capture contains your markers. 
  
 Regards, 
  
 Don

hello don 


yes Your code is work fine but my problem is not solve yet thogh using your code my strating and ending point now show in iamge but some path not shown plese see the attachment.when u see this image u may clear what i say.



007_006_005_004_003_002_001_test.zip (169 KB)

Hi Ibrar,  
  
 Sorry I haven’t catch the point. I only see one fly image marker in the capture and two street lines. 
  
 Could you put two screen captures in zip file so I can see how should be and how the result is? 
  
 Regards, 
  
 Don

Hello Don


Please see the attachment.


There are two image name image1 and image2


i want to show image like image1 but my result is according to your code is image2



002_001_Desktop.zip (303 KB)

 Ibrar,


 


I was having a problem where the getbitmap output image was a different extent than the extent on the screen.


Is this your problem too? or did I miss understand you?


 


I solved the problem by getting the current extent from the client side and passing that to the server and setting the extent on the server before executing getbitmap().


 


I can post some code if you would like.


 


Eric



Client side code gets the extent and sends it to the server with a callback: 
  
  var args = Map1.GetOpenLayersMap().getExtent(); 
     CallServer(args, ""); 
  
 Server side code received the extent from the client, parses it and assigns it, then performs the get bitmap: 
  
  Map1.CurrentExtent = new RectangleShape(Convert.ToDouble(args[0]), Convert.ToDouble(args[3]), Convert.ToDouble(args[2]), Convert.ToDouble(args[1])); 
 Bitmap mapbitmap = Map1.GetBitmap(); 
  
 Hope this helps, 
  
 Eric 


Eric, 
  
 Your code could help some users who met same problem like yours. Thanks for your share! 
  
 Regards, 
  
 Don 
  


Ibrar, 
  
 In your code, it looks you haven’t add feature to routeStart and routeEnd layer. 
  
 I try in project and review the code of GetBitmap function, it looks we can print the marker in SimpleMarkerOverlay or InMemoryMarkerOverlay correct. 
  
 Where the two images from screen one from? 
  
 Regards, 
  
 Don

HI there

You can try to add a document image file zooming library control.It can easily change the viewing file size by zooming in or zooming out.
Besides, apart from the common zooming functions, you can also display
the entire source document image file within web viewer, or fit the
target document file to the width of web viewer or view the current
document image file at its original size.

Hi Abigail, 
  
 Thanks for share your idea.  
  
 We will read the topic and get good information from it. 
  
 Welcome to ThinkGeo forum. 
  
 Regards, 
  
 Don