Subversion Repositories Projects

Rev

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
}