ThinkGeo.com    |     Documentation    |     Premium Support

Getbitmap toggle layer visibility

I am having two issues with getbitmap method.  First, all overlays are visible, even if i have set visibility to false.


 


Second, my markers don't show up in my bitmap.


 


I have emailed a complete copy of my project to Gary, but below is the get bitmap portion.


 


 



        public static void exportMap(ref Map map, string fn, string extent)
        {
            string[] ce = extent.Split(’,’);

            map.CurrentExtent = new RectangleShape(Convert.ToDouble(ce[0]), Convert.ToDouble(ce[3]), Convert.ToDouble(ce[2]), Convert.ToDouble(ce[1]));

            foreach (Overlay ol in map.CustomOverlays)
            {
                ol.IsVisible = false;
                //ol.IsVisible = true;
            }

            Bitmap mapbmp = map.GetBitmap(900,600);

            if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/pinnedItems/")))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/pinnedItems/"));
            }
            string outPath = HttpContext.Current.Server.MapPath("~/pinnedItems/") + fn + “.png”;


            mapbmp.Save(outPath);
        } 


I am executing the method via a user initiated callback, so the map has completely rendered.

Hello Eric, 
  
 Thanks for your code, from your code I notice you use FeatureSourceMarkerOverlay, so with this one, I can recreate your problem, and I checked the code that we don’t support save FeatureSourceMarkerOverlay to bitmap, that’s very strange, we have fixed this today. 
  
 But here comes one new problem, because you have set the map currentExtent before you export to fix the extent offset problem, this will cause another problem for export marker to bitmap, so this problem will totally resolve when we fix that extent synchronize problem. 
  
 Sorry for the inconvenience. 
  
 Regards, 
  
 Gary 
  


Thank you, please let me know when you have fixed this. 
  
 What about turning overlays on and off for the bitmap?  All overlay’s are currently visible in the bitmap, regardless of whether the visibility setting is true or false.

Hello  Eric, 
  
 We will re-check the get bitmap logic(for now, it will get all element from the map control and re-draw it to a bitmap) and fix unreasonable place, as soon as we fixed that, I will let you know and you can get that version and resolve all of your problem. 
  
 Regards, 
  
 Gary

Hello  Eric, 
  
 We will re-check the get bitmap logic(for now, it will get all element from the map control and re-draw it to a bitmap) and fix unreasonable place, as soon as we fixed that, I will let you know and you can get that version and resolve all of your problem. 
  
 Regards, 
  
 Gary

 Is there any information on when the marker to bitmap problem will be resolved??  I haven't heard anything for days, and this is important for my application.



Is it possible to toggle layer visibility in the bitmap??

Hello Eric, 



We have fixed this problem, now the marker will works fine to save to bitmap, please get 6.0.236.0 and have another try, notice we don't synchronize to release branch for now, we will after several days to make sure everything works fine, so please use development branch temporary. 



And there is a property in the layer named IsVisible, you can set it as false, so it won't display in the saved bitmap, to true, it will.


I have tried this in my side, it works fine, can you give me more information about how you failed to use this property or you can try the newest dlls and see the result in your side.



Regards, 



Gary



Gary, 
  
 6.0.236.0 was not available as a development build, I downloaded 6.0.0.236 from daily builds, but it didn’t fix anything. 
  
 Please help. 
  
 Another question, when I set overlay.isVisible = false, the overlay still shows up in the bitmap, is it possible to toggle overlay visibility or must I toggle layer visibility?

Hello Damian, 
   
 Sorry for the inconvenience, our auto build package about development branch failed yesterday(6.0.236.0), the one you are using is release branch(6.0.0.236), so as I said above "Now we have fixed this bug and you can get newest dll 6.0.236.0 and have another try, we don’t synchronize to release branch immediately so please use development branch temporary. " the release branch didn’t change, you can try today to get 6.0.237.0 or later(if failed again, you can wait 6.0.238.0).We will try to make the build successful today. 
  
 And thanks for the further information, so I tested with Layer.IsVisible not Overlay, now we have fixed the Overlay.IsVisible bug, you can get the 6.0.237.0 to let it work. 
  
 Regards, 
   
 Gary

Thank you Gary, 
  
 We are getting close, but are not quite there yet. 
  
 The overlay problem is fixed. 
  
 The marker problem is not completely fixed yet. 
  
 When I export now, the Client Marker Overlay is visible, but the Hospital and ASC Overlays are not. 
  
 One difference I am aware of is that the client overlay.layer has zoomlevel set from 1 to 20, but the ASC and Hospital overlay.layers have zoom levels set only to level 9, because they should only be visible when zoomed in closely.  could this be the problem?? 
  
 One other issue, when the marker exports, it exports at the full size of the image, not the size set in webimageformating. 
  
 Thank you for your help, we are making progress.

Hello Eric, 
  
 Thanks for your further information, for your first question, before you export the bitmap, is the zoomlevel reached level9? In other word, is this marker display on the current map? 
  
 And about"One other issue, when the marker exports, it exports at the full size of the image, not the size set in webimageformating." I think it’s a bug and I will dig it and fix. 
  
 Regards, 
  
 Gary

Hello Eric, 
  
 About this issue "One other issue, when the marker exports, it exports at the full size of the image, not the size set in webimageformating.". The reason is we use OpenLayer to draw the marker but when save to bitmap, we process that in ServerSide, it need some synchronize job. Now we have fixed this and please get the newest dlls and have another try. 
  
 Regards, 
  
 Gary

Great, what about it exporting the overlays that have only partial zoom levels set??

Hello Eric, 
  
 I guess you mean "When I export now, the Client Marker Overlay is visible, but the Hospital and ASC Overlays are not. " right? 
  
 So about this one, my question is "before you export the bitmap, is the zoomlevel reached level9? In other word, is this marker display on the current map?" 
  
 Sorry for the inconvenience. 
  
 Regards, 
  
 Gary

 Yes, the overlays are visible on the current map when I send to export.  Then they are not visible in the exported image.


 


Thanks for working on this.



Hello Eric, 
  
 Thanks for your information, it’s also a bug of Get Bitmap, there is some transfer issue between screen size and bitmap size when using different zoom level . I have fixed it, you can get 6.0.243.0 and try test it. Please let me know if you have any other questions. 
  
 Regards, 
  
 Gary 


I tried the latest build, and it created more problems than it resolved.  With the newest build the exported bitmap is garbled and looks awful. 
  
 The markers didn’t show up either. 
  
 I can show you pictures if you would like.