Fix TileDebugSource to display '' for out-of-range tiles

This commit is contained in:
Andreas Hocevar
2015-06-18 09:40:27 +02:00
parent af319c259b
commit 84e051d19b
2 changed files with 32 additions and 26 deletions

View File

@@ -4235,7 +4235,8 @@ olx.source.MapQuestOptions.prototype.url;
/**
* @typedef {{projection: ol.proj.ProjectionLike,
* tileGrid: (ol.tilegrid.TileGrid|undefined)}}
* tileGrid: (ol.tilegrid.TileGrid|undefined),
* wrapX: (boolean|undefined)}}
* @api
*/
olx.source.TileDebugOptions;
@@ -4257,6 +4258,14 @@ olx.source.TileDebugOptions.prototype.projection;
olx.source.TileDebugOptions.prototype.tileGrid;
/**
* Whether to wrap the world horizontally. Default is `true`.
* @type {boolean|undefined}
* @api
*/
olx.source.TileDebugOptions.prototype.wrapX;
/**
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
* crossOrigin: (null|string|undefined),
@@ -6142,7 +6151,7 @@ olx.tilegrid.TileGridOptions;
/**
* Extent for the tile grid. No tiles outside this extent will be requested by
* {@link ol.source.Tile} sources. When no `origin` or `origins` are
* configured, the `origin` will be set to the bottom-left corner of the extent.
* configured, the `origin` will be set to the top-left corner of the extent.
* @type {ol.Extent|undefined}
* @api
*/
@@ -6189,17 +6198,6 @@ olx.tilegrid.TileGridOptions.prototype.origins;
olx.tilegrid.TileGridOptions.prototype.resolutions;
/**
* Number of tile rows and columns of the grid for each zoom level. This setting
* is only needed for tile coordinate transforms that need to work with origins
* other than the bottom-left corner of the grid. No tiles outside this range
* will be requested by sources. If an `extent` is also configured, it takes
* precedence.
* @type {Array.<ol.Size>|undefined}
*/
olx.tilegrid.TileGridOptions.prototype.sizes;
/**
* Tile size. Default is `[256, 256]`.
* @type {number|ol.Size|undefined}
@@ -6233,9 +6231,8 @@ olx.tilegrid.WMTSOptions;
/**
* Extent for the tile grid. No tiles outside this extent will be requested by
* {@link ol.source.WMTS} sources. When no `origin` or `origins` are
* configured, the `origin` will be calculated from the extent.
* When no `sizes` are configured, they will be calculated from the extent.
* {@link ol.source.Tile} sources. When no `origin` or `origins` are
* configured, the `origin` will be set to the top-left corner of the extent.
* @type {ol.Extent|undefined}
* @api
*/
@@ -6243,19 +6240,23 @@ olx.tilegrid.WMTSOptions.prototype.extent;
/**
* Origin, i.e. the top-left corner of the grid.
* The tile grid origin, i.e. where the `x` and `y` axes meet (`[z, 0, 0]`).
* Tile coordinates increase from left to right and from bottom to top. If not
* specified, `extent` or `origins` must be provided.
* @type {ol.Coordinate|undefined}
* @api
* @api stable
*/
olx.tilegrid.WMTSOptions.prototype.origin;
/**
* Origins, i.e. the top-left corners of the grid for each zoom level. The
* length of this array needs to match the length of the
* `resolutions` array.
* Tile grid origins, i.e. where the `x` and `y` axes meet (`[z, 0, 0]`), for
* each zoom level. If given, the array length should match the length of the
* `resolutions` array, i.e. each resolution can have a different origin. Tile
* coordinates increase from left to right and from bottom to top. If not
* specified, `extent` or `origin` must be provided.
* @type {Array.<ol.Coordinate>|undefined}
* @api
* @api stable
*/
olx.tilegrid.WMTSOptions.prototype.origins;
@@ -6284,7 +6285,10 @@ olx.tilegrid.WMTSOptions.prototype.matrixIds;
* here are the `TileMatrixWidth` and `TileMatrixHeight` advertised in the
* GetCapabilities response of the WMTS, and define the grid's extent together
* with the `origin`. An `extent` can be configured in addition, and will
* further limit the extent for which tile requests are made by sources.
* further limit the extent for which tile requests are made by sources. Note
* that when the top-left corner of the `extent` is used as `origin` or
* `origins`, then the `y` value must be negative because OpenLayers tile
* coordinates increase from bottom to top.
* @type {Array.<ol.Size>|undefined}
* @api
*/

View File

@@ -91,7 +91,8 @@ ol.source.TileDebug = function(options) {
goog.base(this, {
opaque: false,
projection: options.projection,
tileGrid: options.tileGrid
tileGrid: options.tileGrid,
wrapX: goog.isDef(options.wrapX) ? options.wrapX : true
});
};
@@ -108,8 +109,9 @@ ol.source.TileDebug.prototype.getTile = function(z, x, y) {
} else {
var tileSize = ol.size.toSize(this.tileGrid.getTileSize(z));
var tileCoord = [z, x, y];
var text = ol.tilecoord.toString(
this.getTileCoordForTileUrlFunction(tileCoord));
var textTileCoord = this.getTileCoordForTileUrlFunction(tileCoord);
var text = goog.isNull(textTileCoord) ? '' : ol.tilecoord.toString(
this.getTileCoordForTileUrlFunction(textTileCoord));
var tile = new ol.DebugTile_(tileCoord, tileSize, text);
this.tileCache.set(tileCoordKey, tile);
return tile;