diff --git a/lib/OpenLayers/Layer/Grid.js b/lib/OpenLayers/Layer/Grid.js index fcf59c769a..d893c438cf 100644 --- a/lib/OpenLayers/Layer/Grid.js +++ b/lib/OpenLayers/Layer/Grid.js @@ -50,6 +50,13 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { * created by this Layer, if supported by the tile class. */ tileOptions: null, + + /** + * APIProperty: tileClass + * {} The tile class to use for this layer. + * Defaults is OpenLayers.Tile.Image. + */ + tileClass: OpenLayers.Tile.Image, /** * Property: grid @@ -900,9 +907,9 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { * Returns: * {} The added OpenLayers.Tile */ - addTile:function(bounds, position) { - return new OpenLayers.Tile.Image(this, position, bounds, null, - this.tileSize, this.tileOptions); + addTile: function(bounds, position) { + return new this.tileClass(this, position, bounds, null, + this.tileSize, this.tileOptions); }, /** diff --git a/tests/Layer/Grid.html b/tests/Layer/Grid.html index 0c5c747559..85724378c3 100644 --- a/tests/Layer/Grid.html +++ b/tests/Layer/Grid.html @@ -21,13 +21,14 @@ function test_Layer_Grid_constructor (t) { - t.plan( 5 ); + t.plan( 6 ); layer = new OpenLayers.Layer.Grid(name, url, params, null); t.ok( layer instanceof OpenLayers.Layer.Grid, "returns OpenLayers.Layer.Grid object" ); t.eq( layer.buffer, 0, "buffer default is 0"); t.eq( layer.ratio, 1.5, "ratio default is 1.5"); t.eq( layer.numLoadingTiles, 0, "numLoadingTiles starts at 0"); + t.eq( layer.tileClass, OpenLayers.Tile.Image, "tileClass default is OpenLayers.Tile.Image"); var obj = {}; var func = function() {}; @@ -48,6 +49,25 @@ } + function test_Layer_Grid_tileClass(t) { + t.plan(2); + + var myTileClass = OpenLayers.Class(OpenLayers.Tile, {}); + var map = new OpenLayers.Map('map'); + layer = new OpenLayers.Layer.WMS(name, url, params, { + tileClass: myTileClass + }); + map.addLayer(layer); + + t.eq(layer.tileClass, myTileClass, "tileClass is set"); + var instance = layer.addTile(new OpenLayers.Bounds(-10, 10, 50, 100), + new OpenLayers.Pixel(10, 12)); + + t.ok(instance instanceof myTileClass, "addTile returns type is correct"); + + map.destroy(); + } + function test_Layer_Grid_clearTiles (t) { t.plan(4);