Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2498 | - | 1 | |
2 | namespace GMap.NET.MapProviders |
||
3 | { |
||
4 | using System; |
||
5 | using GMap.NET.Projections; |
||
6 | using System.Globalization; |
||
7 | |||
8 | /// <summary> |
||
9 | /// MapBender provider, WMS demo http://www.mapbender.org/ |
||
10 | /// </summary> |
||
11 | public class MapBenderWMSProvider : GMapProvider |
||
12 | { |
||
13 | public static readonly MapBenderWMSProvider Instance; |
||
14 | |||
15 | MapBenderWMSProvider() |
||
16 | { |
||
17 | } |
||
18 | |||
19 | static MapBenderWMSProvider() |
||
20 | { |
||
21 | Instance = new MapBenderWMSProvider(); |
||
22 | } |
||
23 | |||
24 | #region GMapProvider Members |
||
25 | |||
26 | readonly Guid id = new Guid("45742F8D-B552-4CAF-89AE-F20951BBDB2B"); |
||
27 | public override Guid Id |
||
28 | { |
||
29 | get |
||
30 | { |
||
31 | return id; |
||
32 | } |
||
33 | } |
||
34 | |||
35 | readonly string name = "MapBender, WMS demo"; |
||
36 | public override string Name |
||
37 | { |
||
38 | get |
||
39 | { |
||
40 | return name; |
||
41 | } |
||
42 | } |
||
43 | |||
44 | GMapProvider[] overlays; |
||
45 | public override GMapProvider[] Overlays |
||
46 | { |
||
47 | get |
||
48 | { |
||
49 | if(overlays == null) |
||
50 | { |
||
51 | overlays = new GMapProvider[] { this }; |
||
52 | } |
||
53 | return overlays; |
||
54 | } |
||
55 | } |
||
56 | |||
57 | public override PureProjection Projection |
||
58 | { |
||
59 | get |
||
60 | { |
||
61 | return MercatorProjection.Instance; |
||
62 | } |
||
63 | } |
||
64 | |||
65 | public override PureImage GetTileImage(GPoint pos, int zoom) |
||
66 | { |
||
67 | string url = MakeTileImageUrl(pos, zoom, LanguageStr); |
||
68 | |||
69 | return GetTileImageUsingHttp(url); |
||
70 | } |
||
71 | |||
72 | #endregion |
||
73 | |||
74 | string MakeTileImageUrl(GPoint pos, int zoom, string language) |
||
75 | { |
||
76 | var px1 = Projection.FromTileXYToPixel(pos); |
||
77 | var px2 = px1; |
||
78 | |||
79 | px1.Offset(0, Projection.TileSize.Height); |
||
80 | PointLatLng p1 = Projection.FromPixelToLatLng(px1, zoom); |
||
81 | |||
82 | px2.Offset(Projection.TileSize.Width, 0); |
||
83 | PointLatLng p2 = Projection.FromPixelToLatLng(px2, zoom); |
||
84 | |||
85 | var ret = string.Format(CultureInfo.InvariantCulture, UrlFormat, p1.Lng, p1.Lat, p2.Lng, p2.Lat, Projection.TileSize.Width, Projection.TileSize.Height); |
||
86 | |||
87 | return ret; |
||
88 | } |
||
89 | |||
90 | 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"; |
||
91 | } |
||
92 | } |