1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
/**
* @requires OpenLayers/Layer/XYZ.js
*/
/**
* Class: OpenLayers.Layer.OSM
* This layer allows accessing OpenStreetMap tiles. By default the OpenStreetMap
* hosted tile.openstreetmap.org Mapnik tileset is used. If you wish to use
* a different layer instead, you need to provide a different
* URL to the constructor. Here's an example for using OpenCycleMap:
*
* (code)
* new OpenLayers.Layer.OSM("OpenCycleMap",
* ["http://a.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
* "http://b.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
* "http://c.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png"]);
* (end)
*
* Inherits from:
* - <OpenLayers.Layer.XYZ>
*/
OpenLayers.Layer.OSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
/**
* APIProperty: name
* {String} The layer name. Defaults to "OpenStreetMap" if the first
* argument to the constructor is null or undefined.
*/
name: "OpenStreetMap",
/**
* APIProperty: url
* {String} The tileset URL scheme. Defaults to
* : http://[a|b|c].tile.openstreetmap.org/${z}/${x}/${y}.png
* (the official OSM tileset) if the second argument to the constructor
* is null or undefined. To use another tileset you can have something
* like this:
* (code)
* new OpenLayers.Layer.OSM("OpenCycleMap",
* ["http://a.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
* "http://b.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
* "http://c.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png"]);
* (end)
*/
url: [
'http://a.tile.openstreetmap.org/${z}/${x}/${y}.png',
'http://b.tile.openstreetmap.org/${z}/${x}/${y}.png',
'http://c.tile.openstreetmap.org/${z}/${x}/${y}.png'
],
/**
* Property: attribution
* {String} The layer attribution.
*/
attribution: "© <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors",
/**
* Property: sphericalMercator
* {Boolean}
*/
sphericalMercator: true,
/**
* Property: wrapDateLine
* {Boolean}
*/
wrapDateLine: true,
/** APIProperty: tileOptions
* {Object} optional configuration options for <OpenLayers.Tile> instances
* created by this Layer. Default is
*
* (code)
* {crossOriginKeyword: 'anonymous'}
* (end)
*
* When using OSM tilesets other than the default ones, it may be
* necessary to set this to
*
* (code)
* {crossOriginKeyword: null}
* (end)
*
* if the server does not send Access-Control-Allow-Origin headers.
*/
tileOptions: null,
/**
* Constructor: OpenLayers.Layer.OSM
*
* Parameters:
* name - {String} The layer name.
* url - {String} The tileset URL scheme.
* options - {Object} Configuration options for the layer. Any inherited
* layer option can be set in this object (e.g.
* <OpenLayers.Layer.Grid.buffer>).
*/
initialize: function(name, url, options) {
OpenLayers.Layer.XYZ.prototype.initialize.apply(this, arguments);
this.tileOptions = OpenLayers.Util.extend({
crossOriginKeyword: 'anonymous'
}, this.options && this.options.tileOptions);
},
/**
* Method: clone
*/
clone: function(obj) {
if (obj == null) {
obj = new OpenLayers.Layer.OSM(
this.name, this.url, this.getOptions());
}
obj = OpenLayers.Layer.XYZ.prototype.clone.apply(this, [obj]);
return obj;
},
CLASS_NAME: "OpenLayers.Layer.OSM"
});
|