ThinkGeo.com    |     Documentation    |     Premium Support

Unable To Export Markers To Bitmap

I have a map control inside a web user control. The web control is then placed on a main page inside an UpdatePanel. The web control is not shown until the user clicks on the map tab, which then shows the control containing the map.


The user can then add markers for geocoded locations to the map. I plot the locations code similar to the following:



mrkLayer = New InMemoryMarkerOverlay("markerlayer")
mrkLayer.FeatureSource.Open()
mrkLayer.Columns.Add(New FeatureSourceColumn("ADDRESS"))
mrkLayer.FeatureSource.Close()
mrkLayer.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = New WebImage("theme/default/img/marker.gif")
mrkLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20
mrkLayer.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.ContentHtml = "[#ADDRESS#]"

' Set the correct projection (Decimal Degrees to Google’s)
Dim proj4 As New Proj4Projection(Proj4Projection.GetEpsgParametersString(4326), Proj4Projection.GetGoogleMapParametersString())
mrkLayer.FeatureSource.Projection = proj4

ctlMap.CustomOverlays.Add(mrkLayer)
ctlMap.CustomOverlays("markerlayer").IsVisible = True

mrkLayer = DirectCast(ctlMap.CustomOverlays(MARKERLAYERNAME), InMemoryMarkerOverlay)
mrkLayer.Features.Add("L1", _
    New Feature(point.Longitude, point.Latitude, "L1", _
    New String() {"ADDRESS:" & street.Trim() & "
" & city.Trim() & "
" & state.Trim()}))

...which places the marker just fine.


The issue occurs when I attempt to export this to a bitmap. All my layers are exported...except the marker layer. Is this because I'm using an InMemoryMarkerLayer.


The attached file gives an example of this phenomenon in action.


Thanks in advance,


Bob Mc.



ThinkGeo_Marker_Export_Example.zip (133 KB)

 


Hi Bob,
It doesn’t matter to InMemoryMarkerOverlay. I debugged with your sample and click “Export to JPEG”, but it seems that there isn’t any marker in Map1.MarkerOverlay, can you have a check?
The GetBitmap should work with InMemoryMarkerOverlay, please try the attached sample. And any other questions please let us know.
Thanks,
Johnny
 
 

004_003_002_001_Markers.zip (2.37 KB)

Johnny, 
  
 I’ll try the sample later today. 
  
 In regard to your comment about there being no markers in my sample, please click the “Plot Location” link before clicking “Export JPEG” in order to add a marker to the map. My apologies for not mentioning this before. 
  
 Bob Mc.

Johnny, 
  
 The example you provided is fundamentally different from my scenario in the following way: your example has a map control on a simple page that is displayed as soon as the page is loaded, with markers added in the Page_Load event. My example does not operate in that fashion. The scenario I have is: 
 1. The map control is in a web user control on a web content form that is part of a master page. 
 2. The page is displayed, but the map is hidden within a tab control, so is not displayed at page load. 
 3. When the tab is selected by the user, the map is then displayed with an overlay for the region the user selected in the previous page. 
 4. The user can then add markers by entering an address, which is then geocoded and plotted. They can add one or more of these locations interactively. 
 5. The user then clicks the "Export JPEG" button, which should produce the map including markers. 
  
 I am able to plot the markers on the map without problem. However, when the user attempts to export the JPEG all of the layers except for the marker layer are included on the exported bitmap. 
  
 You can reproduce this using my example from the first post by: 
 1. Executing the application to display the main page. 
 2. Click on Tab 2. The map is displayed with a single overlay. 
 3. Click the "Plot Location" button. This will add a single marker in an InMemoryMarkerOverlay. 
 4. Click the "Export Jpeg" button. A JPEG will be produced that does not include the markers in the marker overlay. 
  
 Thanks in advance, 
  
 Bob Mc.

Hi, Bob


Have you tried the latest DLL package for WebEdition? Please get it through helpdesk.thinkgeo.com/helpdesk/login.aspx. We have fixed one problem for the GetBitmap functionality recently.
If you still have issues then, please send us one integrated solution for your problem so that we can run it directly and find the issues out. Sorry for the inconvenience caused to you.
 
Thanks,
 
Khalil

Khalil, 
  
 I’ll admit to being confused by your reply. Are you admitting that there is a bug in the version that I’m using? Are you certain that using the latest version will correct the problem or are you just stabbing in the dark hoping that we will hit on the correct solution? My application, which was released and has been stable since early this year, is using WebEdition v3.1.299.0 and I’m reluctant to upgrade without being certain a bug in this version is the cause of the issue. 
  
 I’m also uncertain what more you’re looking for in an “integrated solution”. What exactly does that mean? Are you looking for a Visual Studio Web Project as opposed to a Web Site project, like I provided in my initial post. I’m not sure what more I can provide - the attachment to my initial post clearly replicates the problem and is as complete as can be. 
  
 If you’re not going to put a bit more effort in than this can you please bump this up to a next-level technical support person? 
  
 Thanks, 
  
 Bob Mc.

 


Bob,
Just as Kailil has mentioned, the function about rendering markers with GetBitmap is added after 3.1.299.0, it’s on 04/02/2010. It will be simple if upgrading to our latest version, it just needs adding one line of code under the code about setting CurrentExtent in InkbExportJpeg_click method.
ctlMap.CurrentScale = ExtentHelper.GetScale(ctlMap.CurrentExtent, ctlMap.Width.Value, ctlMap.MapUnit)
 
If you remain the version, 3.1.299, besides above, please un-comment the codes as following from the attached sample:
 
' todo: if you are still using Version 3.1.299, please add the code as following here
' DrawInMem(bmp)
 
Any questions please let us know. I recomment you upgrading to our latest version if it's available. Thanks,
 
Johnny
 
 

001_ThinkGeo_Marker_Export_Example.zip (24.6 KB)

Johnny, 
  
 Thanks very, very much for giving this some attention. Your v3.1.299 workaround did the trick. I’ll look into upgrading to V4.x at the earliest possible opportunity. As I noted, my app is in production and stable, so I’d prefer not to change libraries without some extensive testing. 
  
 I apologize if I appeared a bit harsh with Khalil. I just felt that his recommendation to upgrade without any supporting evidence seemed like a “stock” answer. Additionally, the request for “one integrated solution” to illustrate the problem when I had provided just such an item in my first post made it appear that I was getting “brushed off”. My perception may be way off, but perception becomes reality. Once again, my apologies if I came on too strong. 
  
 Thanks again, 
  
 Bob Mc.

 


Bob,
Sorry for the inconvenience. Just as you have mentioned, your server is production and stable, that’s why I provided you the workaround. If you still have any questions, we are happy to know it.
Thanks,
Johnny