fix for #785 - fix up gutter logic a little bit. on a path to getting all gutter info in one place
git-svn-id: http://svn.openlayers.org/trunk/openlayers@3555 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -381,6 +381,14 @@ OpenLayers.Layer.prototype = {
|
||||
this.setTileSize();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @returns The size that the image should be, taking into account gutters
|
||||
* @tile OpenLayers.Size
|
||||
*/
|
||||
getImageSize: function() {
|
||||
return (this.imageSize || this.tileSize);
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: setTileSize
|
||||
@@ -405,11 +413,6 @@ OpenLayers.Layer.prototype = {
|
||||
this.imageOffset = new OpenLayers.Pixel(-this.gutter, -this.gutter);
|
||||
this.imageSize = new OpenLayers.Size(tileSize.w + (2 * this.gutter),
|
||||
tileSize.h + (2 * this.gutter));
|
||||
} else {
|
||||
// layers without gutters may have null tile size - as long
|
||||
// as they don't rely on Tile.Image
|
||||
this.imageSize = tileSize;
|
||||
this.imageOffset = new OpenLayers.Pixel(0, 0);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -172,15 +172,12 @@ OpenLayers.Layer.Image.prototype =
|
||||
},
|
||||
|
||||
/**
|
||||
* Set the tile size based on the map size. This also sets layer.imageSize
|
||||
* and layer.imageOffset for use by Tile.Image.
|
||||
* Set the tile size based on the map size.
|
||||
*/
|
||||
setTileSize: function() {
|
||||
var tileWidth = this.extent.getWidth() / this.map.getResolution();
|
||||
var tileHeight = this.extent.getHeight() / this.map.getResolution();
|
||||
this.tileSize = new OpenLayers.Size(tileWidth, tileHeight);
|
||||
this.imageSize = this.tileSize;
|
||||
this.imageOffset = new OpenLayers.Pixel(0, 0);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -119,15 +119,17 @@ OpenLayers.Layer.MapServer.prototype =
|
||||
bounds = this.adjustBounds(bounds);
|
||||
// Make a list, so that getFullRequestString uses literal ","
|
||||
var extent = [bounds.left, bounds. bottom, bounds.right, bounds.top];
|
||||
|
||||
var imageSize = this.getImageSize();
|
||||
|
||||
// make lists, so that literal ','s are used
|
||||
var url = this.getFullRequestString(
|
||||
{mapext: extent,
|
||||
imgext: extent,
|
||||
map_size: [this.imageSize.w, this.imageSize.h],
|
||||
imgx: this.imageSize.w / 2,
|
||||
imgy: this.imageSize.h / 2,
|
||||
imgxy: [this.imageSize.w, this.imageSize.h]
|
||||
map_size: [imageSize.w, imageSize.h],
|
||||
imgx: imageSize.w / 2,
|
||||
imgy: imageSize.h / 2,
|
||||
imgxy: [imageSize.w, imageSize.h]
|
||||
});
|
||||
|
||||
return url;
|
||||
|
||||
@@ -125,16 +125,13 @@ OpenLayers.Layer.MapServer.Untiled.prototype =
|
||||
|
||||
/**
|
||||
* Method: setTileSize
|
||||
* Set the tile size based on the map size. This also sets layer.imageSize
|
||||
* and layer.imageOffset for use by Tile.Image.
|
||||
* Set the tile size based on the map size.
|
||||
*/
|
||||
setTileSize: function() {
|
||||
var tileSize = this.map.getSize();
|
||||
tileSize.w = tileSize.w * this.ratio;
|
||||
tileSize.h = tileSize.h * this.ratio;
|
||||
this.tileSize = tileSize;
|
||||
this.imageSize = tileSize;
|
||||
this.imageOffset = new OpenLayers.Pixel(0, 0);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -142,10 +142,12 @@ OpenLayers.Layer.WMS.prototype =
|
||||
*/
|
||||
getURL: function (bounds) {
|
||||
bounds = this.adjustBounds(bounds);
|
||||
|
||||
var imageSize = this.getImageSize();
|
||||
return this.getFullRequestString(
|
||||
{BBOX:bounds.toBBOX(),
|
||||
WIDTH:this.imageSize.w,
|
||||
HEIGHT:this.imageSize.h});
|
||||
WIDTH:imageSize.w,
|
||||
HEIGHT:imageSize.h});
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -147,16 +147,13 @@ OpenLayers.Layer.WMS.Untiled.prototype =
|
||||
|
||||
/**
|
||||
* Method: setTileSize
|
||||
* Set the tile size based on the map size. This also sets layer.imageSize
|
||||
* and layer.imageOffset for use by Tile.Image.
|
||||
* Set the tile size based on the map size.
|
||||
*/
|
||||
setTileSize: function() {
|
||||
var tileSize = this.map.getSize();
|
||||
tileSize.w = tileSize.w * this.ratio;
|
||||
tileSize.h = tileSize.h * this.ratio;
|
||||
this.tileSize = tileSize;
|
||||
this.imageSize = tileSize;
|
||||
this.imageOffset = new OpenLayers.Pixel(0, 0);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -107,13 +107,14 @@ OpenLayers.Tile.Image.prototype =
|
||||
OpenLayers.Util.modifyDOMElement(this.frame,
|
||||
null, this.position, this.size);
|
||||
|
||||
var imageSize = this.layer.getImageSize();
|
||||
if (this.layer.alpha) {
|
||||
OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv,
|
||||
null, null, this.layer.imageSize, this.url);
|
||||
null, null, imageSize, this.url);
|
||||
} else {
|
||||
this.imgDiv.src = this.url;
|
||||
OpenLayers.Util.modifyDOMElement(this.imgDiv,
|
||||
null, null, this.layer.imageSize) ;
|
||||
null, null, imageSize) ;
|
||||
}
|
||||
this.drawn = true;
|
||||
return true;
|
||||
@@ -153,10 +154,14 @@ OpenLayers.Tile.Image.prototype =
|
||||
* Creates the imgDiv property on the tile.
|
||||
*/
|
||||
initImgDiv: function() {
|
||||
|
||||
var offset = this.layer.imageOffset;
|
||||
var size = this.layer.getImageSize();
|
||||
|
||||
if (this.layer.alpha) {
|
||||
this.imgDiv = OpenLayers.Util.createAlphaImageDiv(null,
|
||||
this.layer.imageOffset,
|
||||
this.layer.imageSize,
|
||||
offset,
|
||||
size,
|
||||
null,
|
||||
"relative",
|
||||
null,
|
||||
@@ -165,8 +170,8 @@ OpenLayers.Tile.Image.prototype =
|
||||
true);
|
||||
} else {
|
||||
this.imgDiv = OpenLayers.Util.createImage(null,
|
||||
this.layer.imageOffset,
|
||||
this.layer.imageSize,
|
||||
offset,
|
||||
size,
|
||||
null,
|
||||
"relative",
|
||||
null,
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
}
|
||||
|
||||
function test_50_Layer_Image_tileTests (t) {
|
||||
t.plan(9);
|
||||
t.plan(6);
|
||||
var map = new OpenLayers.Map('map');
|
||||
|
||||
layer = new OpenLayers.Layer.Image('Test Layer',
|
||||
@@ -49,9 +49,6 @@
|
||||
|
||||
map.addLayer(layer);
|
||||
map.zoomToMaxExtent();
|
||||
t.ok(layer.imageSize, "layer.imageSize is set");
|
||||
t.ok(layer.tileSize, "layer.tileSize is set");
|
||||
t.ok(layer.tileSize.equals(layer.imageSize), "tileSize equals imageSize");
|
||||
|
||||
// no resolution info was sent, so maxResolution should be calculated
|
||||
// by aspectRatio*extent/size (this is the pixel aspect ratio)
|
||||
|
||||
@@ -188,11 +188,11 @@
|
||||
map.setCenter(new OpenLayers.LonLat(0,0), 5);
|
||||
|
||||
var tile = layer.grid[0][0];
|
||||
t.ok(tile.layer.imageSize.equals(tile.size),
|
||||
"zero size gutter doesn't change image size");
|
||||
t.ok(tile.layer.imageSize == null,
|
||||
"zero size gutter doesn't set image size");
|
||||
|
||||
t.ok(tile.layer.imageOffset.equals(new OpenLayers.Pixel(0, 0)),
|
||||
"zero size gutter doesn't affect image offset");
|
||||
t.ok(tile.layer.imageOffset == null,
|
||||
"zero size gutter doesn't set image offset");
|
||||
|
||||
var zero_gutter_bounds = tile.bounds;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user