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
 
7
   /// <summary>
8
   /// TurkeyMap provider, http://maps.pergo.com.tr/
9
   /// </summary>
10
   public class TurkeyMapProvider : GMapProvider
11
   {
12
      public static readonly TurkeyMapProvider Instance;
13
 
14
      TurkeyMapProvider()
15
      {
16
         Copyright = string.Format("©{0} Pergo - Map data ©{0} Fideltus Advanced Technology", DateTime.Today.Year);
17
         Area = new RectLatLng(42.5830078125, 25.48828125, 19.05029296875, 6.83349609375);
18
         InvertedAxisY = true;
19
      }
20
 
21
      static TurkeyMapProvider()
22
      {
23
         Instance = new TurkeyMapProvider();
24
      }
25
 
26
      #region GMapProvider Members
27
 
28
      readonly Guid id = new Guid("EDE895BD-756D-4BE4-8D03-D54DD8856F1D");
29
      public override Guid Id
30
      {
31
         get
32
         {
33
            return id;
34
         }
35
      }
36
 
37
      readonly string name = "TurkeyMap";
38
      public override string Name
39
      {
40
         get
41
         {
42
            return name;
43
         }
44
      }
45
 
46
      GMapProvider[] overlays;
47
      public override GMapProvider[] Overlays
48
      {
49
         get
50
         {
51
            if(overlays == null)
52
            {
53
               overlays = new GMapProvider[] { this };
54
            }
55
            return overlays;
56
         }
57
      }
58
 
59
      public override PureProjection Projection
60
      {
61
         get
62
         {
63
            return MercatorProjection.Instance;
64
         }
65
      }
66
 
67
      public override PureImage GetTileImage(GPoint pos, int zoom)
68
      {
69
         string url = MakeTileImageUrl(pos, zoom, LanguageStr);
70
 
71
         return GetTileImageUsingHttp(url);
72
      }
73
 
74
      #endregion
75
 
76
      string MakeTileImageUrl(GPoint pos, int zoom, string language)
77
      {
78
         // http://{domain}/{layerName}/{zoomLevel}/{first3LetterOfTileX}/{second3LetterOfTileX}/{third3LetterOfTileX}/{first3LetterOfTileY}/{second3LetterOfTileY}/{third3LetterOfTileXY}.png
79
 
80
         // http://map3.pergo.com.tr/tile/00/000/000/001/000/000/000.png   
81
         // That means: Zoom Level: 0 TileX: 1 TileY: 0
82
 
83
         // http://domain/tile/14/000/019/371/000/011/825.png
84
         // That means: Zoom Level: 14 TileX: 19371 TileY:11825
85
 
86
         // updated version
87
         // http://map1.pergo.com.tr/publish/tile/tile9913/06/000/000/038/000/000/039.png
88
 
89
         string x = pos.X.ToString(Zeros).Insert(3, Slash).Insert(7, Slash); // - 000/000/001
90
         string y = pos.Y.ToString(Zeros).Insert(3, Slash).Insert(7, Slash); // - 000/000/000
91
 
92
         return string.Format(UrlFormat, GetServerNum(pos, 3), zoom, x, y);
93
      }
94
 
95
      static readonly string Zeros = "000000000";
96
      static readonly string Slash = "/";
97
      static readonly string UrlFormat = "http://map{0}.pergo.com.tr/publish/tile/tile9913/{1:00}/{2}/{3}.png";
98
   }
99
}