From b2f810361db10a95286a9c58c576043c18a4d033 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Wed, 21 Jul 2010 07:55:37 +0000 Subject: [PATCH] Improved clone method for Layer.XYZ; gave Layer.OSM its own clone method. Thanks aratcliffe for bringing this up. r=tschaub (closes #2738) git-svn-id: http://svn.openlayers.org/trunk/openlayers@10507 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Layer/XYZ.js | 20 ++++++++++---------- tests/Layer/XYZ.html | 13 +++++++++++++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/OpenLayers/Layer/XYZ.js b/lib/OpenLayers/Layer/XYZ.js index 1a833926fc..2b749cc026 100644 --- a/lib/OpenLayers/Layer/XYZ.js +++ b/lib/OpenLayers/Layer/XYZ.js @@ -65,7 +65,7 @@ OpenLayers.Layer.XYZ = OpenLayers.Class(OpenLayers.Layer.Grid, { * obj - {Object} Is this ever used? * * Returns: - * {} An exact clone of this OpenLayers.Layer.Grid + * {} An exact clone of this OpenLayers.Layer.XYZ */ clone: function (obj) { @@ -76,15 +76,7 @@ OpenLayers.Layer.XYZ = OpenLayers.Class(OpenLayers.Layer.Grid, { } //get all additions from superclasses - obj = OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this, [obj]); - - // copy/set any non-init, non-simple values here - if (this.tileSize != null) { - obj.tileSize = this.tileSize.clone(); - } - - // we do not want to copy reference to grid, so we make a new array - obj.grid = []; + obj = OpenLayers.Layer.Grid.prototype.clone.apply(this, [obj]); return obj; }, @@ -174,5 +166,13 @@ OpenLayers.Layer.OSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { attribution: "Data CC-By-SA by OpenStreetMap", sphericalMercator: true, url: 'http://tile.openstreetmap.org/${z}/${x}/${y}.png', + 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" }); diff --git a/tests/Layer/XYZ.html b/tests/Layer/XYZ.html index ae02f79ffa..99b4616f66 100644 --- a/tests/Layer/XYZ.html +++ b/tests/Layer/XYZ.html @@ -173,6 +173,19 @@ map.destroy(); } + function test_clone(t) { + t.plan(2); + + var clone; + + layer = new OpenLayers.Layer.XYZ(name, url, options); + clone = layer.clone(); + t.ok(clone instanceof OpenLayers.Layer.XYZ, "clone is a Layer.XYZ instance"); + + layer = new OpenLayers.Layer.OSM(); + clone = layer.clone(); + t.ok(clone instanceof OpenLayers.Layer.OSM, "clone is a Layer.OSM instance"); + }