[ol.layer.XYZ] more tiling fixes, and additional tests

This commit is contained in:
Éric Lemoine
2012-06-20 16:17:40 +02:00
parent 5eeb21c125
commit 7bf05964b8
2 changed files with 81 additions and 14 deletions

View File

@@ -133,19 +133,23 @@ ol.layer.XYZ.prototype.getData = function(bounds, resolution) {
gridLeft = tileOriginX + tileWidthGeo * offsetX,
gridTop = tileOriginY - tileHeightGeo * offsetY;
var tiles = [], tile, url, i = 0, j;
while (gridTop - (i * tileHeightGeo) > boundsMinY) {
tiles[i] = [];
j = 0;
while (gridLeft + (j * tileWidthGeo) < boundsMaxX) {
url = me.url_.replace('{x}', offsetX + i + '')
.replace('{y}', offsetY + j + '')
var tiles = [],
tile,
url,
x = 0,
y = 0;
while (gridTop - (y * tileHeightGeo) > boundsMinY) {
tiles[y] = [];
while (gridLeft + (x * tileWidthGeo) < boundsMaxX) {
url = me.url_.replace('{x}', offsetX + x + '')
.replace('{y}', offsetY + y + '')
.replace('{z}', zoom);
tile = new ol.Tile(url);
tiles[i][j] = tile;
j++;
tiles[y][x] = tile;
x++;
}
i++;
y++;
x = 0;
}
return new ol.TileSet(tiles, tileWidth, tileHeight, resolution);

View File

@@ -51,11 +51,11 @@ describe('ol.layer.XYZ', function() {
expect(tile.getImg()).toBeDefined();
tile = tiles[0][1];
expect(tile.getUrl()).toEqual('/1/0/1');
expect(tile.getUrl()).toEqual('/1/1/0');
expect(tile.getImg()).toBeDefined();
tile = tiles[1][0];
expect(tile.getUrl()).toEqual('/1/1/0');
expect(tile.getUrl()).toEqual('/1/0/1');
expect(tile.getImg()).toBeDefined();
tile = tiles[1][1];
@@ -81,11 +81,11 @@ describe('ol.layer.XYZ', function() {
expect(tile.getImg()).toBeDefined();
tile = tiles[0][1];
expect(tile.getUrl()).toEqual('/1/0/1');
expect(tile.getUrl()).toEqual('/1/1/0');
expect(tile.getImg()).toBeDefined();
tile = tiles[1][0];
expect(tile.getUrl()).toEqual('/1/1/0');
expect(tile.getUrl()).toEqual('/1/0/1');
expect(tile.getImg()).toBeDefined();
tile = tiles[1][1];
@@ -94,5 +94,68 @@ describe('ol.layer.XYZ', function() {
});
});
describe('extent -96,32,-32,96, resolution 0.5', function() {
it('returns the expected data', function() {
var tileset = layer.getData(
new ol.Bounds(-96, 32, -32, 96), 0.5);
var tiles = tileset.getTiles();
expect(tiles.length).toEqual(1);
expect(tiles[0].length).toEqual(1);
var tile;
tile = tiles[0][0];
expect(tile.getUrl()).toEqual('/1/0/0');
expect(tile.getImg()).toBeDefined();
});
});
describe('extent -32,32,32,96, resolution 0.5', function() {
it('returns the expected data', function() {
var tileset = layer.getData(
new ol.Bounds(-32, 32, 32, 96), 0.5);
var tiles = tileset.getTiles();
expect(tiles.length).toEqual(1);
expect(tiles[0].length).toEqual(2);
var tile;
tile = tiles[0][0];
expect(tile.getUrl()).toEqual('/1/0/0');
expect(tile.getImg()).toBeDefined();
tile = tiles[0][1];
expect(tile.getUrl()).toEqual('/1/1/0');
expect(tile.getImg()).toBeDefined();
});
});
describe('extent 32,-32,96,32, resolution 0.5', function() {
it('returns the expected data', function() {
var tileset = layer.getData(
new ol.Bounds(32, -32, 96, 32), 0.5);
var tiles = tileset.getTiles();
expect(tiles.length).toEqual(2);
expect(tiles[0].length).toEqual(1);
expect(tiles[1].length).toEqual(1);
var tile;
tile = tiles[0][0];
expect(tile.getUrl()).toEqual('/1/1/0');
expect(tile.getImg()).toBeDefined();
tile = tiles[1][0];
expect(tile.getUrl()).toEqual('/1/1/1');
expect(tile.getImg()).toBeDefined();
});
});
});
});