Damian,
map.DrawToBitmap is kind of like do a screenshot for the map control. I would recommend use the GeoCanvas.
Here is the sample code
GeoImage bitmap = new GeoImage(4000, 2000);
ShapeFileFeatureLayer layer = new ShapeFileFeatureLayer(Application.StartupPath + @"\Shapefile\Countries02.shp");
layer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyle.CreateSimpleLineStyle(GeoColor.FromArgb(255, 169, 195, 221), 2F, GeoColors.Black, 4F, false);
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyle.CreateSimpleAreaStyle(GeoColor.FromArgb(255, 233, 232, 214), GeoColor.FromArgb(255, 156, 155, 154), 1);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.Open();
RectangleShape extent = layer.GetBoundingBox();
GeoCanvas canvas = GeoCanvas.CreateDefaultGeoCanvas();
canvas.BeginDrawing(bitmap, extent, GeographyUnit.DecimalDegree);
layer.Draw(canvas, new Collection<SimpleCandidate>());
canvas.EndDrawing();
var executingFolderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
bitmap.Save($@"{executingFolderPath}\Jpeg2000Test.png");
You can draw all layers to the same canvas. And then save the bitmap.
Thanks
Frank