Go to most recent revision |
Blame |
Last modification |
View Log
| RSS feed
namespace GMap
.NET.MapProviders
{
using System;
using GMap.NET.Projections;
using System.Globalization;
/// <summary>
/// MapBender provider, WMS demo http://www.mapbender.org/
/// </summary>
public class MapBenderWMSProvider
: GMapProvider
{
public static readonly MapBenderWMSProvider Instance
;
MapBenderWMSProvider
()
{
}
static MapBenderWMSProvider
()
{
Instance
= new MapBenderWMSProvider
();
}
#region GMapProvider Members
readonly Guid id
= new Guid
("45742F8D-B552-4CAF-89AE-F20951BBDB2B");
public override Guid Id
{
get
{
return id
;
}
}
readonly string name
= "MapBender, WMS demo";
public override string Name
{
get
{
return name
;
}
}
GMapProvider
[] overlays
;
public override GMapProvider
[] Overlays
{
get
{
if(overlays
== null)
{
overlays
= new GMapProvider
[] { this };
}
return overlays
;
}
}
public override PureProjection Projection
{
get
{
return MercatorProjection
.Instance;
}
}
public override PureImage GetTileImage
(GPoint pos,
int zoom
)
{
string url
= MakeTileImageUrl
(pos, zoom, LanguageStr
);
return GetTileImageUsingHttp
(url
);
}
#endregion
string MakeTileImageUrl
(GPoint pos,
int zoom,
string language
)
{
var px1
= Projection
.FromTileXYToPixel(pos
);
var px2
= px1
;
px1
.Offset(0, Projection
.TileSize.Height);
PointLatLng p1
= Projection
.FromPixelToLatLng(px1, zoom
);
px2
.Offset(Projection
.TileSize.Width,
0);
PointLatLng p2
= Projection
.FromPixelToLatLng(px2, zoom
);
var ret
= string.Format(CultureInfo
.InvariantCulture, UrlFormat, p1
.Lng, p1
.Lat, p2
.Lng, p2
.Lat, Projection
.TileSize.Width, Projection
.TileSize.Height);
return ret
;
}
static readonly string UrlFormat
= "http://mapbender.wheregroup.com/cgi-bin/mapserv?map=/data/umn/osm/osm_basic.map&VERSION=1.1.1&REQUEST=GetMap&SERVICE=WMS&LAYERS=OSM_Basic&styles=&bbox={0},{1},{2},{3}&width={4}&height={5}&srs=EPSG:4326&format=image/png";
}
}