OpenStreetMap.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /* vim: set expandtab sw=4 ts=4 sts=4: */
  2. /**
  3. * Namespace: Util.OSM
  4. */
  5. OpenLayers.Util.OSM = {};
  6. /**
  7. * Constant: MISSING_TILE_URL
  8. * {String} URL of image to display for missing tiles
  9. */
  10. OpenLayers.Util.OSM.MISSING_TILE_URL = "http://www.openstreetmap.org/openlayers/img/404.png";
  11. /**
  12. * Property: originalOnImageLoadError
  13. * {Function} Original onImageLoadError function.
  14. */
  15. OpenLayers.Util.OSM.originalOnImageLoadError = OpenLayers.Util.onImageLoadError;
  16. /**
  17. * Function: onImageLoadError
  18. */
  19. OpenLayers.Util.onImageLoadError = function() {
  20. if (this.src.match(/^http:\/\/[abc]\.[a-z]+\.openstreetmap\.org\//)) {
  21. this.src = OpenLayers.Util.OSM.MISSING_TILE_URL;
  22. } else if (this.src.match(/^http:\/\/[def]\.tah\.openstreetmap\.org\//)) {
  23. // do nothing - this layer is transparent
  24. } else {
  25. OpenLayers.Util.OSM.originalOnImageLoadError;
  26. }
  27. };
  28. /**
  29. * Class: OpenLayers.Layer.OSM.Mapnik
  30. *
  31. * Inherits from:
  32. * - <OpenLayers.Layer.OSM>
  33. */
  34. OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
  35. /**
  36. * Constructor: OpenLayers.Layer.OSM.Mapnik
  37. *
  38. * Parameters:
  39. * name - {String}
  40. * options - {Object} Hashtable of extra options to tag onto the layer
  41. */
  42. initialize: function(name, options) {
  43. var url = [
  44. "http://a.tile.openstreetmap.org/${z}/${x}/${y}.png",
  45. "http://b.tile.openstreetmap.org/${z}/${x}/${y}.png",
  46. "http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"
  47. ];
  48. options = OpenLayers.Util.extend({
  49. numZoomLevels: 19,
  50. buffer: 0,
  51. transitionEffect: "resize"
  52. }, options);
  53. var newArguments = [name, url, options];
  54. OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
  55. },
  56. CLASS_NAME: "OpenLayers.Layer.OSM.Mapnik"
  57. });
  58. /**
  59. * Class: OpenLayers.Layer.OSM.Osmarender
  60. *
  61. * Inherits from:
  62. * - <OpenLayers.Layer.OSM>
  63. */
  64. OpenLayers.Layer.OSM.Osmarender = OpenLayers.Class(OpenLayers.Layer.OSM, {
  65. /**
  66. * Constructor: OpenLayers.Layer.OSM.Osmarender
  67. *
  68. * Parameters:
  69. * name - {String}
  70. * options - {Object} Hashtable of extra options to tag onto the layer
  71. */
  72. initialize: function(name, options) {
  73. var url = [
  74. "http://a.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
  75. "http://b.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
  76. "http://c.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png"
  77. ];
  78. options = OpenLayers.Util.extend({
  79. numZoomLevels: 18,
  80. buffer: 0,
  81. transitionEffect: "resize"
  82. }, options);
  83. var newArguments = [name, url, options];
  84. OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
  85. },
  86. CLASS_NAME: "OpenLayers.Layer.OSM.Osmarender"
  87. });
  88. /**
  89. * Class: OpenLayers.Layer.OSM.CycleMap
  90. *
  91. * Inherits from:
  92. * - <OpenLayers.Layer.OSM>
  93. */
  94. OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
  95. /**
  96. * Constructor: OpenLayers.Layer.OSM.CycleMap
  97. *
  98. * Parameters:
  99. * name - {String}
  100. * options - {Object} Hashtable of extra options to tag onto the layer
  101. */
  102. initialize: function(name, options) {
  103. var url = [
  104. "http://a.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
  105. "http://b.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
  106. "http://c.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png"
  107. ];
  108. options = OpenLayers.Util.extend({
  109. numZoomLevels: 19,
  110. buffer: 0,
  111. transitionEffect: "resize"
  112. }, options);
  113. var newArguments = [name, url, options];
  114. OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
  115. },
  116. CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap"
  117. });