From 21857fa69c493392cf806a9c77a97f1e71eb46bb Mon Sep 17 00:00:00 2001 From: aconcagua21 Date: Mon, 6 Jun 2016 09:01:56 +0200 Subject: [PATCH] Updated tile addressing for all Czech map providers (mapy.cz). Added 2 map providers (CzechTuristWinterMapProvider, CzechGeographicMapProvider). --- GMap.NET.Core/GMap.NET.Core.csproj | 2 + .../Czech/CzechGeographicMapProvider.cs | 59 ++++++++++++++++++ .../Czech/CzechHistoryMapProvider.cs | 11 ++-- .../Czech/CzechHybridMapProvider.cs | 9 +-- .../Czech/CzechMapProvider.cs | 15 ++--- .../Czech/CzechSatelliteMapProvider.cs | 9 +-- .../Czech/CzechTuristMapProvider.cs | 9 +-- .../Czech/CzechTuristWinterMapProvider.cs | 60 +++++++++++++++++++ .../GMap.NET.MapProviders/GMapProvider.cs | 2 + 9 files changed, 143 insertions(+), 33 deletions(-) create mode 100644 GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechGeographicMapProvider.cs create mode 100644 GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechTuristWinterMapProvider.cs diff --git a/GMap.NET.Core/GMap.NET.Core.csproj b/GMap.NET.Core/GMap.NET.Core.csproj index ba044abe..dd275d07 100644 --- a/GMap.NET.Core/GMap.NET.Core.csproj +++ b/GMap.NET.Core/GMap.NET.Core.csproj @@ -202,6 +202,8 @@ + + diff --git a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechGeographicMapProvider.cs b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechGeographicMapProvider.cs new file mode 100644 index 00000000..3f8a903b --- /dev/null +++ b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechGeographicMapProvider.cs @@ -0,0 +1,59 @@ +namespace GMap.NET.MapProviders +{ + using System; + + /// + /// CzechTuristMap provider, http://www.mapy.cz/ + /// + public class CzechGeographicMapProvider : CzechMapProviderBase + { + public static readonly CzechGeographicMapProvider Instance; + + CzechGeographicMapProvider() + { + } + + static CzechGeographicMapProvider() + { + Instance = new CzechGeographicMapProvider(); + } + + #region GMapProvider Members + + readonly Guid id = new Guid("{44E5E6D5-DC75-4909-A5CB-6BAFB0CAC54F}"); + public override Guid Id + { + get + { + return id; + } + } + + readonly string name = "CzechGeographicMap"; + public override string Name + { + get + { + return name; + } + } + + 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) + { + // http://m3.mapserver.mapy.czzemepis-m/14-8802-5528 + + return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, pos.X, pos.Y); + } + + static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/zemepis-m/{1}-{2}-{3}"; + } +} \ No newline at end of file diff --git a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechHistoryMapProvider.cs b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechHistoryMapProvider.cs index 88f7ca9e..4e98b8dc 100644 --- a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechHistoryMapProvider.cs +++ b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechHistoryMapProvider.cs @@ -12,6 +12,8 @@ public class CzechHistoryMapProvider : CzechMapProviderBase CzechHistoryMapProvider() { + Area = new RectLatLng(51.2024819920053, 11.8401353319027, 7.22833716731277, 2.78312271922872); + MaxZoom = 15; } static CzechHistoryMapProvider() @@ -63,14 +65,11 @@ public override PureImage GetTileImage(GPoint pos, int zoom) string MakeTileImageUrl(GPoint pos, int zoom, string language) { - // http://m4.mapserver.mapy.cz/army2/9_7d00000_8080000 + // http://m3.mapserver.mapy.cz/army2-m/14-8802-5528 - long xx = pos.X << (28 - zoom); - long yy = ((((long)Math.Pow(2.0, (double)zoom)) - 1) - pos.Y) << (28 - zoom); - - return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, xx, yy); + return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, pos.X, pos.Y); } - static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/army2/{1}_{2:x7}_{3:x7}"; + static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/army2-m/{1}-{2}-{3}"; } } \ No newline at end of file diff --git a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechHybridMapProvider.cs b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechHybridMapProvider.cs index 8e71064e..00b3af60 100644 --- a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechHybridMapProvider.cs +++ b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechHybridMapProvider.cs @@ -63,14 +63,11 @@ public override PureImage GetTileImage(GPoint pos, int zoom) string MakeTileImageUrl(GPoint pos, int zoom, string language) { - // http://m2.mapserver.mapy.cz/hybrid/9_7d00000_7b80000 + // http://m3.mapserver.mapy.cz/hybrid-m/14-8802-5528 - long xx = pos.X << (28 - zoom); - long yy = ((((long)Math.Pow(2.0, (double)zoom)) - 1) - pos.Y) << (28 - zoom); - - return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, xx, yy); + return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, pos.X, pos.Y); } - static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/hybrid/{1}_{2:x7}_{3:x7}"; + static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/hybrid-m/{1}-{2}-{3}"; } } \ No newline at end of file diff --git a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechMapProvider.cs b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechMapProvider.cs index 49c9ca32..3818b191 100644 --- a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechMapProvider.cs +++ b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechMapProvider.cs @@ -9,7 +9,7 @@ public abstract class CzechMapProviderBase : GMapProvider public CzechMapProviderBase() { RefererUrl = "http://www.mapy.cz/"; - Area = new RectLatLng(51.2024819920053, 11.8401353319027, 7.22833716731277, 2.78312271922872); + //Area = new RectLatLng(51.2024819920053, 11.8401353319027, 7.22833716731277, 2.78312271922872); } #region GMapProvider Members @@ -33,7 +33,7 @@ public override PureProjection Projection { get { - return MapyCZProjection.Instance; + return MercatorProjection.Instance; } } @@ -104,15 +104,12 @@ public override PureImage GetTileImage(GPoint pos, int zoom) string MakeTileImageUrl(GPoint pos, int zoom, string language) { - // ['base','ophoto','turist','army2'] - // http://m1.mapserver.mapy.cz/base-n/3_8000000_8000000 + // ['base-m','ophoto-m','turist-m','army2-m'] + // http://m3.mapserver.mapy.cz/base-m/14-8802-5528 - long xx = pos.X << (28 - zoom); - long yy = ((((long)Math.Pow(2.0, (double)zoom)) - 1) - pos.Y) << (28 - zoom); - - return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, xx, yy); + return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, pos.X, pos.Y); } - static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/base-n/{1}_{2:x7}_{3:x7}"; + static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/base-m/{1}-{2}-{3}"; } } \ No newline at end of file diff --git a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechSatelliteMapProvider.cs b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechSatelliteMapProvider.cs index 6e989544..9c61f2c4 100644 --- a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechSatelliteMapProvider.cs +++ b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechSatelliteMapProvider.cs @@ -50,14 +50,11 @@ public override PureImage GetTileImage(GPoint pos, int zoom) string MakeTileImageUrl(GPoint pos, int zoom, string language) { - //http://m3.mapserver.mapy.cz/ophoto/9_7a80000_7a80000 + // http://m3.mapserver.mapy.cz/ophoto-m/14-8802-5528 - long xx = pos.X << (28 - zoom); - long yy = ((((long)Math.Pow(2.0, (double)zoom)) - 1) - pos.Y) << (28 - zoom); - - return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, xx, yy); + return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, pos.X, pos.Y); } - static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/ophoto/{1}_{2:x7}_{3:x7}"; + static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/ophoto-m/{1}-{2}-{3}"; } } \ No newline at end of file diff --git a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechTuristMapProvider.cs b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechTuristMapProvider.cs index 6c995185..77172d39 100644 --- a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechTuristMapProvider.cs +++ b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechTuristMapProvider.cs @@ -50,14 +50,11 @@ public override PureImage GetTileImage(GPoint pos, int zoom) string MakeTileImageUrl(GPoint pos, int zoom, string language) { - // http://m1.mapserver.mapy.cz/turist/3_8000000_8000000 + // http://m3.mapserver.mapy.cz/wtourist-m/14-8802-5528 - long xx = pos.X << (28 - zoom); - long yy = ((((long)Math.Pow(2.0, (double)zoom)) - 1) - pos.Y) << (28 - zoom); - - return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, xx, yy); + return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, pos.X, pos.Y); } - static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/turist/{1}_{2:x7}_{3:x7}"; + static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/wturist-m/{1}-{2}-{3}"; } } \ No newline at end of file diff --git a/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechTuristWinterMapProvider.cs b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechTuristWinterMapProvider.cs new file mode 100644 index 00000000..a6612fe6 --- /dev/null +++ b/GMap.NET.Core/GMap.NET.MapProviders/Czech/CzechTuristWinterMapProvider.cs @@ -0,0 +1,60 @@ + +namespace GMap.NET.MapProviders +{ + using System; + + /// + /// CzechTuristMap provider, http://www.mapy.cz/ + /// + public class CzechTuristWinterMapProvider : CzechMapProviderBase + { + public static readonly CzechTuristWinterMapProvider Instance; + + CzechTuristWinterMapProvider() + { + } + + static CzechTuristWinterMapProvider() + { + Instance = new CzechTuristWinterMapProvider(); + } + + #region GMapProvider Members + + readonly Guid id = new Guid("1A2C354A-BF73-42AC-92E5-90DECE204F11"); + public override Guid Id + { + get + { + return id; + } + } + + readonly string name = "CzechTuristWinterMap"; + public override string Name + { + get + { + return name; + } + } + + 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) + { + // http://m3.mapserver.mapy.cz/wturist_winter-m/14-8802-5528 + + return string.Format(UrlFormat, GetServerNum(pos, 3) + 1, zoom, pos.X, pos.Y); + } + + static readonly string UrlFormat = "http://m{0}.mapserver.mapy.cz/wturist_winter-m/{1}-{2}-{3}"; + } +} \ No newline at end of file diff --git a/GMap.NET.Core/GMap.NET.MapProviders/GMapProvider.cs b/GMap.NET.Core/GMap.NET.MapProviders/GMapProvider.cs index 100540d2..246e2694 100644 --- a/GMap.NET.Core/GMap.NET.MapProviders/GMapProvider.cs +++ b/GMap.NET.Core/GMap.NET.MapProviders/GMapProvider.cs @@ -131,7 +131,9 @@ static GMapProviders() public static readonly CzechSatelliteMapProvider CzechSatelliteMap = CzechSatelliteMapProvider.Instance; public static readonly CzechHybridMapProvider CzechHybridMap = CzechHybridMapProvider.Instance; public static readonly CzechTuristMapProvider CzechTuristMap = CzechTuristMapProvider.Instance; + public static readonly CzechTuristWinterMapProvider CzechTuristWinterMap = CzechTuristWinterMapProvider.Instance; public static readonly CzechHistoryMapProvider CzechHistoryMap = CzechHistoryMapProvider.Instance; + public static readonly CzechGeographicMapProvider CzechGeographicMap = CzechGeographicMapProvider.Instance; public static readonly ArcGIS_Imagery_World_2D_MapProvider ArcGIS_Imagery_World_2D_Map = ArcGIS_Imagery_World_2D_MapProvider.Instance; public static readonly ArcGIS_ShadedRelief_World_2D_MapProvider ArcGIS_ShadedRelief_World_2D_Map = ArcGIS_ShadedRelief_World_2D_MapProvider.Instance;