Add gutter support to TileUrlFunction
This commit is contained in:
@@ -58,7 +58,7 @@ ol.source.TileWMS = function(options) {
|
|||||||
var tileUrlFunctions = goog.array.map(
|
var tileUrlFunctions = goog.array.map(
|
||||||
urls, function(url) {
|
urls, function(url) {
|
||||||
return ol.TileUrlFunction.createFromParamsFunction(
|
return ol.TileUrlFunction.createFromParamsFunction(
|
||||||
url, this.params_, ol.source.wms.getUrl);
|
url, this.params_, this.gutter_, ol.source.wms.getUrl);
|
||||||
}, this);
|
}, this);
|
||||||
tileUrlFunction = ol.TileUrlFunction.createFromTileUrlFunctions(
|
tileUrlFunction = ol.TileUrlFunction.createFromTileUrlFunctions(
|
||||||
tileUrlFunctions);
|
tileUrlFunctions);
|
||||||
|
|||||||
@@ -84,14 +84,16 @@ ol.TileUrlFunction.createFromTileUrlFunctions = function(tileUrlFunctions) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} baseUrl Base URL (may have query data).
|
* @param {string} baseUrl Base URL (may have query data).
|
||||||
* @param {Object.<string,*>} params to encode in the URL.
|
* @param {Object.<string,*>} params Params to encode in the URL.
|
||||||
|
* @param {number} gutter Gutter value.
|
||||||
* @param {function(this: ol.source.TileImage, string, Object.<string,*>,
|
* @param {function(this: ol.source.TileImage, string, Object.<string,*>,
|
||||||
* ol.Extent, ol.Size, ol.proj.Projection)} paramsFunction params function.
|
* ol.Extent, ol.Size, ol.proj.Projection)} paramsFunction params function.
|
||||||
* @return {ol.TileUrlFunctionType} Tile URL function.
|
* @return {ol.TileUrlFunctionType} Tile URL function.
|
||||||
*/
|
*/
|
||||||
ol.TileUrlFunction.createFromParamsFunction =
|
ol.TileUrlFunction.createFromParamsFunction =
|
||||||
function(baseUrl, params, paramsFunction) {
|
function(baseUrl, params, gutter, paramsFunction) {
|
||||||
var tmpExtent = ol.extent.createEmpty();
|
var tmpExtent = ol.extent.createEmpty();
|
||||||
|
var tmpSize = [0, 0];
|
||||||
return (
|
return (
|
||||||
/**
|
/**
|
||||||
* @this {ol.source.TileImage}
|
* @this {ol.source.TileImage}
|
||||||
@@ -107,10 +109,14 @@ ol.TileUrlFunction.createFromParamsFunction =
|
|||||||
if (goog.isNull(tileGrid)) {
|
if (goog.isNull(tileGrid)) {
|
||||||
tileGrid = ol.tilegrid.getForProjection(projection);
|
tileGrid = ol.tilegrid.getForProjection(projection);
|
||||||
}
|
}
|
||||||
var size = tileGrid.getTileSize(tileCoord.z);
|
var tileResolution = tileGrid.getResolution(tileCoord.z);
|
||||||
|
var tileSize = tileGrid.getTileSize(tileCoord.z);
|
||||||
|
tmpSize[0] = tileSize[0] + (2 * gutter);
|
||||||
|
tmpSize[1] = tileSize[1] + (2 * gutter);
|
||||||
var extent = tileGrid.getTileCoordExtent(tileCoord, tmpExtent);
|
var extent = tileGrid.getTileCoordExtent(tileCoord, tmpExtent);
|
||||||
|
ol.extent.buffer(extent, tileResolution * gutter);
|
||||||
return paramsFunction.call(this, baseUrl, params,
|
return paramsFunction.call(this, baseUrl, params,
|
||||||
extent, size, projection);
|
extent, tmpSize, projection);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ describe('ol.TileUrlFunction', function() {
|
|||||||
var fakeTileSource = {getTileGrid: function() {return null;}};
|
var fakeTileSource = {getTileGrid: function() {return null;}};
|
||||||
var params = {foo: 'bar'};
|
var params = {foo: 'bar'};
|
||||||
var tileUrlFunction = ol.TileUrlFunction.createFromParamsFunction(
|
var tileUrlFunction = ol.TileUrlFunction.createFromParamsFunction(
|
||||||
'url', params, paramsFunction);
|
'url', params, 0, paramsFunction);
|
||||||
it('calls the passed function with the correct arguments', function() {
|
it('calls the passed function with the correct arguments', function() {
|
||||||
var args = tileUrlFunction.call(fakeTileSource,
|
var args = tileUrlFunction.call(fakeTileSource,
|
||||||
new ol.TileCoord(0, 0, 0), projection);
|
new ol.TileCoord(0, 0, 0), projection);
|
||||||
|
|||||||
Reference in New Issue
Block a user