ThinkGeo.com    |     Documentation    |     Premium Support

Can MapSuite return a static image of a map

I am interested in having MapSuite return a static image instead of a the map control, similar to how google static maps API works.


Basically I would like to compile a few different layers on the server side, save as an static image and stream it back to the browser.  I think this should be possible using some of the functions from the printing features, but I am looking for some guidance to get this working.


The goal would be to be able to reference a map with an image tag.




 


 


 


 


 



Hi Kevin,


I had the same problem when building a WMS-like server.


Your code needs to work along these lines:



Function RenderMapLayers(...) As Bitmap

    Dim res As Bitmap = Nothing

    Try
        Dim myGeoImage As GeoImage = GdiPlusGeoCanvas.CreateGeoImage(mapWidth, mapHeight)

        Dim myGdiPlusGeoCanvas As GdiPlusGeoCanvas = New GdiPlusGeoCanvas()
        myGdiPlusGeoCanvas.BeginDrawing(myGeoImage, mapExtent, GeographyUnit.Meter)

        For Each ovl In Map1.CustomOverlays
            If TypeOf ovl Is LayerOverlay Then
                For Each lyr In ovl.Layers
                    SyncLock lyr
                        lyr.Draw(myGdiPlusGeoCanvas, New Collection(Of SimpleCandidate)())
                    End SyncLock
                Next
            End If
        Next

        myGdiPlusGeoCanvas.EndDrawing()

        Dim ImageBytes = GdiPlusGeoCanvas.ConvertGeoImageToMemoryStream(myGeoImage).ToArray()
        Dim ms As New MemoryStream(ImageBytes)
        res = New Bitmap(ms)
        ms.Dispose()

    Catch ex As Exception
    End Try

    Return res

End Function

 

HTH


 



Hello Lars I, 
  
 Thanks for your help and code. 
  
 Hello Kevin, 
  
 Does this helped, if you still meet problems, please let us know. 
  
 Regards, 
  
 Gary