Merge pull request #11548 from ahocevar/bind-tileurlfunction

Bind tileUrlFunction before returning it from getTileUrlFunction
This commit is contained in:
Andreas Hocevar
2020-09-11 09:43:07 +02:00
committed by GitHub
2 changed files with 13 additions and 2 deletions

View File

@@ -68,7 +68,7 @@ class UrlTile extends TileSource {
this.tileLoadFunction = options.tileLoadFunction;
if (options.tileUrlFunction) {
this.tileUrlFunction = options.tileUrlFunction.bind(this);
this.tileUrlFunction = options.tileUrlFunction;
}
/**
@@ -105,7 +105,9 @@ class UrlTile extends TileSource {
* @api
*/
getTileUrlFunction() {
return this.tileUrlFunction;
return Object.getPrototypeOf(this).tileUrlFunction === this.tileUrlFunction
? this.tileUrlFunction.bind(this)
: this.tileUrlFunction;
}
/**

View File

@@ -159,6 +159,15 @@ describe('ol.source.TileWMS', function () {
});
describe('#tileUrlFunction', function () {
it('can be used when obtained through #getTileUrlFunction', function () {
options.extent = [-80, -40, -50, -10];
const source = new TileWMS(options);
const tileCoord = [3, 2, 2];
expect(function () {
source.getTileUrlFunction()(tileCoord, 1, getProjection('EPSG:4326'));
}).to.not.throwException();
});
it('returns a tile if it is contained within layers extent', function () {
options.extent = [-80, -40, -50, -10];
const source = new TileWMS(options);