Add a javascript file to provide OSM layers for OpenStreetMap.
This commit is contained in:
parent
2ba147e7fa
commit
29645d2d29
1 changed files with 144 additions and 0 deletions
144
public/openlayers/OpenStreetMap.js
Normal file
144
public/openlayers/OpenStreetMap.js
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
/**
|
||||||
|
* Namespace: Util.OSM
|
||||||
|
*/
|
||||||
|
OpenLayers.Util.OSM = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constant: MISSING_TILE_URL
|
||||||
|
* {String} URL of image to display for missing tiles
|
||||||
|
*/
|
||||||
|
OpenLayers.Util.OSM.MISSING_TILE_URL = "http://openstreetmap.org/openlayers/img/404.png";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Property: originalOnImageLoadError
|
||||||
|
* {Function} Original onImageLoadError function.
|
||||||
|
*/
|
||||||
|
OpenLayers.Util.OSM.originalOnImageLoadError = OpenLayers.Util.onImageLoadError;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function: onImageLoadError
|
||||||
|
*/
|
||||||
|
OpenLayers.Util.onImageLoadError = function() {
|
||||||
|
if (this.src.match(/^http:\/\/[abc]\.[a-z]+\.openstreetmap\.org/)) {
|
||||||
|
this.src = OpenLayers.Util.OSM.MISSING_TILE_URL;
|
||||||
|
} else {
|
||||||
|
OpenLayers.Util.OSM.originalOnImageLoadError;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @requires OpenLayers/Layer/TMS.js
|
||||||
|
*
|
||||||
|
* Class: OpenLayers.Layer.OSM
|
||||||
|
*
|
||||||
|
* Inherits from:
|
||||||
|
* - <OpenLayers.Layer.TMS>
|
||||||
|
*/
|
||||||
|
OpenLayers.Layer.OSM = OpenLayers.Class(OpenLayers.Layer.TMS, {
|
||||||
|
/**
|
||||||
|
* Constructor: OpenLayers.Layer.OSM
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* name - {String}
|
||||||
|
* url - {String}
|
||||||
|
* options - {Object} Hashtable of extra options to tag onto the layer
|
||||||
|
*/
|
||||||
|
initialize: function(name, url, options) {
|
||||||
|
options = OpenLayers.Util.extend(options, { attribution: "Powered by <a href='http://openstreetmap.org/'>OpenStreetMap</a>" });
|
||||||
|
OpenLayers.Layer.TMS.prototype.initialize.apply(this, arguments);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: getUrl
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* bounds - {<OpenLayers.Bounds>}
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* {String} A string with the layer's url and parameters and also the
|
||||||
|
* passed-in bounds and appropriate tile size specified as
|
||||||
|
* parameters
|
||||||
|
*/
|
||||||
|
getURL: function (bounds) {
|
||||||
|
var res = this.map.getResolution();
|
||||||
|
var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
|
||||||
|
var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
|
||||||
|
var z = this.map.getZoom();
|
||||||
|
var limit = Math.pow(2, z);
|
||||||
|
|
||||||
|
if (y < 0 || y >= limit)
|
||||||
|
{
|
||||||
|
return OpenLayers.Util.OSM.MISSING_TILE_URL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = ((x % limit) + limit) % limit;
|
||||||
|
|
||||||
|
var url = this.url;
|
||||||
|
var path = z + "/" + x + "/" + y + ".png";
|
||||||
|
|
||||||
|
if (url instanceof Array)
|
||||||
|
{
|
||||||
|
url = this.selectUrl(path, url);
|
||||||
|
}
|
||||||
|
|
||||||
|
return url + path;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
CLASS_NAME: "OpenLayers.Layer.OSM"
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class: OpenLayers.Layer.OSM.Mapnik
|
||||||
|
*
|
||||||
|
* Inherits from:
|
||||||
|
* - <OpenLayers.Layer.OSM>
|
||||||
|
*/
|
||||||
|
OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
||||||
|
/**
|
||||||
|
* Constructor: OpenLayers.Layer.OSM.Mapnik
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* name - {String}
|
||||||
|
* options - {Object} Hashtable of extra options to tag onto the layer
|
||||||
|
*/
|
||||||
|
initialize: function(name, options) {
|
||||||
|
var url = [
|
||||||
|
"http://a.tile.openstreetmap.org/",
|
||||||
|
"http://b.tile.openstreetmap.org/",
|
||||||
|
"http://c.tile.openstreetmap.org/"
|
||||||
|
];
|
||||||
|
var newArguments = [name, url, options];
|
||||||
|
OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
||||||
|
},
|
||||||
|
|
||||||
|
CLASS_NAME: "OpenLayers.Layer.OSM.Mapnik"
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class: OpenLayers.Layer.OSM.Osmarender
|
||||||
|
*
|
||||||
|
* Inherits from:
|
||||||
|
* - <OpenLayers.Layer.OSM>
|
||||||
|
*/
|
||||||
|
OpenLayers.Layer.OSM.Osmarender = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
||||||
|
/**
|
||||||
|
* Constructor: OpenLayers.Layer.OSM.Osmarender
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* name - {String}
|
||||||
|
* options - {Object} Hashtable of extra options to tag onto the layer
|
||||||
|
*/
|
||||||
|
initialize: function(name, options) {
|
||||||
|
var url = [
|
||||||
|
"http://a.tah.openstreetmap.org/Tiles/tile.php/",
|
||||||
|
"http://b.tah.openstreetmap.org/Tiles/tile.php/",
|
||||||
|
"http://c.tah.openstreetmap.org/Tiles/tile.php/"
|
||||||
|
];
|
||||||
|
var newArguments = [name, url, options];
|
||||||
|
OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
||||||
|
},
|
||||||
|
|
||||||
|
CLASS_NAME: "OpenLayers.Layer.OSM.Osmarender"
|
||||||
|
});
|
Loading…
Add table
Add a link
Reference in a new issue