Make ol.source.Tile#getTilePixelRatio work for all sources

Even for sources which serve dynamic tile sizes based on devicePixelRatio
This commit is contained in:
Petr Sloup
2015-12-28 10:48:09 +01:00
parent 28240adaf5
commit 767ac44e99
5 changed files with 21 additions and 31 deletions
+3 -12
View File
@@ -134,19 +134,10 @@ ol.source.TileArcGISRest.prototype.getRequestUrl_ =
/**
* @param {number} z Z.
* @param {number} pixelRatio Pixel ratio.
* @param {ol.proj.Projection} projection Projection.
* @return {ol.Size} Size.
* @inheritDoc
*/
ol.source.TileArcGISRest.prototype.getTilePixelSize =
function(z, pixelRatio, projection) {
var tileSize = goog.base(this, 'getTilePixelSize', z, pixelRatio, projection);
if (pixelRatio == 1) {
return tileSize;
} else {
return ol.size.scale(tileSize, pixelRatio, this.tmpSize);
}
ol.source.TileArcGISRest.prototype.getTilePixelRatio = function(pixelRatio) {
return pixelRatio;
};
+1 -1
View File
@@ -217,7 +217,7 @@ ol.source.TileImage.prototype.getTile =
var tile = new ol.reproj.Tile(
sourceProjection, sourceTileGrid,
projection, targetTileGrid,
tileCoord, wrappedTileCoord, this.getTilePixelRatio(),
tileCoord, wrappedTileCoord, this.getTilePixelRatio(pixelRatio),
goog.bind(function(z, x, y, pixelRatio) {
return this.getTileInternal(z, x, y, pixelRatio, sourceProjection);
}, this), this.reprojectionErrorThreshold_,
+9 -3
View File
@@ -243,9 +243,10 @@ ol.source.Tile.prototype.getTileCacheForProjection = function(projection) {
/**
* @param {number} pixelRatio Pixel ratio.
* @return {number} Tile pixel ratio.
*/
ol.source.Tile.prototype.getTilePixelRatio = function() {
ol.source.Tile.prototype.getTilePixelRatio = function(pixelRatio) {
return this.tilePixelRatio_;
};
@@ -259,8 +260,13 @@ ol.source.Tile.prototype.getTilePixelRatio = function() {
ol.source.Tile.prototype.getTilePixelSize =
function(z, pixelRatio, projection) {
var tileGrid = this.getTileGridForProjection(projection);
return ol.size.scale(ol.size.toSize(tileGrid.getTileSize(z), this.tmpSize),
this.tilePixelRatio_, this.tmpSize);
var tilePixelRatio = this.getTilePixelRatio(pixelRatio);
var tileSize = ol.size.toSize(tileGrid.getTileSize(z), this.tmpSize);
if (tilePixelRatio == 1) {
return tileSize;
} else {
return ol.size.scale(tileSize, tilePixelRatio, this.tmpSize);
}
};
+3 -12
View File
@@ -275,19 +275,10 @@ ol.source.TileWMS.prototype.getRequestUrl_ =
/**
* @param {number} z Z.
* @param {number} pixelRatio Pixel ratio.
* @param {ol.proj.Projection} projection Projection.
* @return {ol.Size} Size.
* @inheritDoc
*/
ol.source.TileWMS.prototype.getTilePixelSize =
function(z, pixelRatio, projection) {
var tileSize = goog.base(this, 'getTilePixelSize', z, pixelRatio, projection);
if (pixelRatio == 1 || !this.hidpi_ || this.serverType_ === undefined) {
return tileSize;
} else {
return ol.size.scale(tileSize, pixelRatio, this.tmpSize);
}
ol.source.TileWMS.prototype.getTilePixelRatio = function(pixelRatio) {
return (!this.hidpi_ || this.serverType_ === undefined) ? 1 : pixelRatio;
};