diff --git a/src/ol/source/tile.js b/src/ol/source/tile.js index 01179cf590..ccb6a2909c 100644 --- a/src/ol/source/tile.js +++ b/src/ol/source/tile.js @@ -282,7 +282,7 @@ ol.source.Tile.prototype.getTileCoordForTileUrlFunction = function(tileCoord, op opt_projection : this.getProjection(); var tileGrid = this.getTileGridForProjection(projection); if (this.getWrapX() && projection.isGlobal()) { - tileCoord = ol.tilecoord.wrapX(tileCoord, tileGrid, projection); + tileCoord = ol.tilegrid.wrapX(tileGrid, tileCoord, projection); } return ol.tilecoord.withinExtentAndZ(tileCoord, tileGrid) ? tileCoord : null; }; diff --git a/src/ol/tilecoord.js b/src/ol/tilecoord.js index 913f93f697..d9291f2643 100644 --- a/src/ol/tilecoord.js +++ b/src/ol/tilecoord.js @@ -1,8 +1,5 @@ goog.provide('ol.tilecoord'); -goog.require('ol.extent'); -goog.require('ol.tilegrid'); - /** * @enum {number} @@ -93,27 +90,6 @@ ol.tilecoord.quadKey = function(tileCoord) { }; -/** - * @param {ol.TileCoord} tileCoord Tile coordinate. - * @param {ol.tilegrid.TileGrid} tileGrid Tile grid. - * @param {ol.proj.Projection} projection Projection. - * @return {ol.TileCoord} Tile coordinate. - */ -ol.tilecoord.wrapX = function(tileCoord, tileGrid, projection) { - var z = tileCoord[0]; - var center = tileGrid.getTileCoordCenter(tileCoord); - var projectionExtent = ol.tilegrid.extentFromProjection(projection); - if (!ol.extent.containsCoordinate(projectionExtent, center)) { - var worldWidth = ol.extent.getWidth(projectionExtent); - var worldsAway = Math.ceil((projectionExtent[0] - center[0]) / worldWidth); - center[0] += worldWidth * worldsAway; - return tileGrid.getTileCoordForCoordAndZ(center, z); - } else { - return tileCoord; - } -}; - - /** * @param {ol.TileCoord} tileCoord Tile coordinate. * @param {!ol.tilegrid.TileGrid} tileGrid Tile grid. diff --git a/src/ol/tilegrid/index.js b/src/ol/tilegrid/index.js index 5c8f50ab73..ac643dd884 100644 --- a/src/ol/tilegrid/index.js +++ b/src/ol/tilegrid/index.js @@ -1,5 +1,6 @@ goog.provide('ol.tilegrid'); +goog.require('ol.extent'); goog.require('ol.extent.Corner'); goog.require('ol.obj'); goog.require('ol.proj'); @@ -22,6 +23,27 @@ ol.tilegrid.getForProjection = function(projection) { }; +/** + * @param {ol.tilegrid.TileGrid} tileGrid Tile grid. + * @param {ol.TileCoord} tileCoord Tile coordinate. + * @param {ol.proj.Projection} projection Projection. + * @return {ol.TileCoord} Tile coordinate. + */ +ol.tilegrid.wrapX = function(tileGrid, tileCoord, projection) { + var z = tileCoord[0]; + var center = tileGrid.getTileCoordCenter(tileCoord); + var projectionExtent = ol.tilegrid.extentFromProjection(projection); + if (!ol.extent.containsCoordinate(projectionExtent, center)) { + var worldWidth = ol.extent.getWidth(projectionExtent); + var worldsAway = Math.ceil((projectionExtent[0] - center[0]) / worldWidth); + center[0] += worldWidth * worldsAway; + return tileGrid.getTileCoordForCoordAndZ(center, z); + } else { + return tileCoord; + } +}; + + /** * @param {ol.Extent} extent Extent. * @param {number=} opt_maxZoom Maximum zoom level (default is