diff --git a/lib/OpenLayers/Layer/Grid.js b/lib/OpenLayers/Layer/Grid.js index e8938f827a..07229a4abd 100644 --- a/lib/OpenLayers/Layer/Grid.js +++ b/lib/OpenLayers/Layer/Grid.js @@ -131,6 +131,20 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { ); }, + /** + * Method: removeMap + * Called when the layer is removed from the map. + * + * Parameters: + * map - {} The map. + */ + removeMap: function(map) { + if(this.timerId != null) { + window.clearTimeout(this.timerId); + this.timerId = null; + } + }, + /** * APIMethod: destroy * Deconstruct the layer and clear the grid. diff --git a/tests/Layer/Grid.html b/tests/Layer/Grid.html index 80dd7300bd..a4dbcee53f 100644 --- a/tests/Layer/Grid.html +++ b/tests/Layer/Grid.html @@ -593,7 +593,7 @@ function test_Layer_Grid_destroy (t) { - t.plan( 7 ); + t.plan( 8 ); var map = new OpenLayers.Map('map'); layer = new OpenLayers.Layer.Grid(name, url, params); @@ -608,6 +608,7 @@ map.addLayer(layer); map.setCenter(new OpenLayers.LonLat(0,0), 10); + map.setCenter(new OpenLayers.LonLat(1,1)); //grab a reference to one of the tiles @@ -616,6 +617,7 @@ layer.destroy(); t.eq( tile.imgDiv, null, "Tile destroyed" ); + t.eq( layer.timerId, null, "Tile loading timeout cleared"); t.ok( layer.grid == null, "tiles appropriately destroyed") diff --git a/tests/Map.html b/tests/Map.html index 568b7e4c87..63c3cbca05 100644 --- a/tests/Map.html +++ b/tests/Map.html @@ -352,6 +352,8 @@ valid = OpenLayers.Map.prototype.isValidZoomLevel.apply(map, [19]); t.eq(valid, false, "19 is not a valid zoomLevel when baseLayer has restrictedMinZoom of 1"); + + map.destroy(); } function test_Map_isValidLonLat(t) { @@ -977,6 +979,8 @@ map.addControls(controls2, pixels2); t.eq(map.controls.length, 5, "three additional controls were added by map.addControls with a px-array"); t.eq(map.controls[3].position.toString(), pixels2[1].toString(), "control 'fourthctrl' has position set to given px"); + + map.destroy(); } function test_Map_getControl(t) { @@ -1598,6 +1602,8 @@ t.eq(map.layers.length, 2, "multiple layers added from options"); t.ok(map.baseLayer, "map has a base layer"); + + map.destroy(); }