Have you been racking your brain trying to get an image from your map and have just about given up? I have went through several GIS libraries including OpenLayers, ThinkGEO and some others and finally came across SharpMap which is an open-source .net library that does geo-spatial imagery and it just so happens to have a very nice little Image export routine that does the job and does it simple, here is all the code you need to generate a map from SharpMap:
//code to create Lat and Lon points
var list = new List<KeyValuePair<double, double>>();
samplePoints.ForEach(delegate(ScoutSample sample)
{
list.Add(new KeyValuePair<double, double>(Latitude,Longitude));
});
var layer = new VectorLayer("Field Layer", provider);
layer.Style.Fill = new SolidBrush(Color.Green);
layer.Style.Outline = Pens.Black;
layer.Style.EnableOutline = true;
var map = new SharpMap.Map(new Size(250, 250));
//code to add the points
foreach (var pt in points)
{
//Add a single Point
var geomColl = new Collection<Geometry>();
var vLayer = new VectorLayer("GeometryLayer");
var point = new SharpMap.Geometries.Point(pt.Key, pt.Value);
geomColl.Add(point);
vLayer.DataSource = new GeometryProvider(geomColl);
map.Layers.Add(vLayer);
}
map.Layers.Add(layer);
map.BackColor = Color.White;
map.ZoomToExtents();
var image = map.GetMap() as Bitmap;
Of course I am not showing you my provider at the moment, I am still fine-tuning the code and I will update this code at a later time, but this is just so easy, just instantiate the map and then call GetMap(), that is how it should be done. There isn’t any methods in OpenLayers that I could see and ThinkGeo has to have a control loaded before you can run the GetMap, which is garbage.


