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