Merge pull request #3559 from ahocevar/tile-width-height

Add support for non-square tiles
This commit is contained in:
Andreas Hocevar
2015-04-16 09:26:27 +02:00
23 changed files with 444 additions and 121 deletions

65
test/spec/ol/size.test.js Normal file
View File

@@ -0,0 +1,65 @@
goog.provide('ol.test.size');
describe('ol.size', function() {
describe('#buffer()', function() {
it('buffers a size', function() {
var size = [50, 75];
var bufferedSize = ol.size.buffer(size, 20);
expect(bufferedSize).to.eql([90, 115]);
});
it('reuses an existing array', function() {
var reuse = [0, 0];
var size = [50, 50];
var bufferedSize = ol.size.buffer(size, 20, reuse);
expect(bufferedSize).to.equal(reuse);
});
});
describe('#scale()', function() {
it('scales a size and rounds the result', function() {
var size = [50, 75];
var scaledSize = ol.size.scale(size, 1.75);
expect(scaledSize).to.eql([88, 131]);
});
it('reuses an existing array', function() {
var reuse = [0, 0];
var size = [50, 50];
var scaledSize = ol.size.scale(size, 1.75, reuse);
expect(scaledSize).to.equal(reuse);
});
});
describe('#toSize()', function() {
it('creates a size array from a number', function() {
var size = ol.size.toSize(512);
expect(size).to.eql([512, 512]);
});
it('reuses an existing array', function() {
var sizeArray = [0, 0];
var size = ol.size.toSize(512, sizeArray);
expect(size).to.equal(sizeArray);
});
it('returns a size array unaltered', function() {
var sizeArray = [512, 256];
var size = ol.size.toSize(sizeArray);
expect(size).to.equal(sizeArray);
size = ol.size.toSize(sizeArray, [0, 0]);
expect(size).to.equal(sizeArray);
});
});
});
goog.require('ol.size');

View File

@@ -129,6 +129,21 @@ describe('ol.source.TileWMS', function() {
expect(queryData.get('BBOX')).to.be('-45,-45,0,0');
});
it('works with non-square tiles', function() {
options.tileGrid = new ol.tilegrid.TileGrid({
tileSize: [640, 320],
resolutions: [1.40625, 0.703125, 0.3515625, 0.17578125],
origin: [-180, -90]
});
var source = new ol.source.TileWMS(options);
var tileCoord = [3, 3, 1];
var url = source.tileUrlFunction(tileCoord, 1, ol.proj.get('EPSG:4326'));
var uri = new goog.Uri(url);
var queryData = uri.getQueryData();
expect(queryData.get('WIDTH')).to.be('640');
expect(queryData.get('HEIGHT')).to.be('320');
});
});
describe('#getGetFeatureInfo', function() {
@@ -205,3 +220,4 @@ goog.require('goog.Uri');
goog.require('ol.ImageTile');
goog.require('ol.source.TileWMS');
goog.require('ol.proj');
goog.require('ol.tilegrid.TileGrid');