PageRenderTime 50ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/Main/src/DynamicDataDisplay.Maps/Servers/Network/OpenStreetMapServer.cs

#
C# | 76 lines | 55 code | 6 blank | 15 comment | 1 complexity | 0f3bde64611ff5936ce89092e3e9c73b MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. using System;
  2. namespace Microsoft.Research.DynamicDataDisplay.Charts.Maps.Network
  3. {
  4. /// <summary>
  5. /// Sample network tile server, which downloads tile images from OpenStreetMap server.
  6. /// <remarks>
  7. /// OpenStreetMap - http://www.openstreetmap.org/
  8. /// Used here by permission of OpenStreetMap.
  9. /// To use this sample server in your applications, you should read, agree and follow to
  10. /// OpenStreetMap license.
  11. /// Do not use this server too much - do not create high load on OpenStreetMap servers.
  12. /// OpenStreetMap tile isage policy - http://wiki.openstreetmap.org/wiki/Tile_usage_policy
  13. /// </remarks>
  14. /// </summary>
  15. public sealed class OpenStreetMapServer : NetworkTileServer
  16. {
  17. /// <summary>
  18. /// Initializes a new instance of the <see cref="OpenStreetMapServer"/> class.
  19. /// </summary>
  20. public OpenStreetMapServer()
  21. {
  22. UriFormat = "http://{3}.{4}/{0}/{1}/{2}.png";
  23. ServerName = "Open Street Maps";
  24. XCycling = true;
  25. MaxLatitude = 85.2878;
  26. MinLevel = 0;
  27. MaxLevel = 17;
  28. MaxConcurrentDownloads = 3;
  29. ServersNum = 3;
  30. //todo determine max level
  31. }
  32. private OpenStreetMapRenderer renderer = OpenStreetMapRenderer.Mapnik;
  33. public OpenStreetMapRenderer Renderer
  34. {
  35. get { return renderer; }
  36. set
  37. {
  38. renderer = value;
  39. RaiseChangedEvent();
  40. }
  41. }
  42. protected override string CreateRequestUriCore(TileIndex index)
  43. {
  44. int z = (int)index.Level;
  45. int shift = MapTileProvider.GetSideTilesCount(z) / 2;
  46. int x = index.X + shift;
  47. int y = MapTileProvider.GetSideTilesCount(z) - 1 - index.Y - shift;
  48. char serverIdx = (char)('a' + CurrentServer);
  49. string uri = "";
  50. switch (renderer)
  51. {
  52. case OpenStreetMapRenderer.Mapnik:
  53. uri = "tile.openstreetmap.org";
  54. break;
  55. case OpenStreetMapRenderer.Osmarenderer:
  56. uri = "tah.openstreetmap.org/Tiles/tile";
  57. break;
  58. case OpenStreetMapRenderer.CycleMap:
  59. uri = "andy.sandbox.cloudmade.com/tiles/cycle";
  60. break;
  61. case OpenStreetMapRenderer.NoName:
  62. uri = "tile.cloudmade.com/fd093e52f0965d46bb1c6c6281022199/3/256";
  63. break;
  64. default:
  65. break;
  66. }
  67. return String.Format(UriFormat, z.ToString(), x.ToString(), y.ToString(), serverIdx.ToString(), uri);
  68. }
  69. }
  70. }