Do not transform tile coordinates for tileUrlFunction

This commit is contained in:
Andreas Hocevar
2015-06-18 09:09:21 +02:00
parent 2249c82ac2
commit af319c259b
19 changed files with 58 additions and 308 deletions

View File

@@ -20,10 +20,10 @@ describe('ol.source.TileVector', function() {
var projection = ol.proj.get('EPSG:3857');
source.loadFeatures(
[-8238854, 4969777, -8237854, 4970777], 4.8, projection);
expect(tileCoords[0]).to.eql([15, 9647, 12320]);
expect(tileCoords[1]).to.eql([15, 9647, 12319]);
expect(tileCoords[2]).to.eql([15, 9648, 12320]);
expect(tileCoords[3]).to.eql([15, 9648, 12319]);
expect(tileCoords[0]).to.eql([15, 9647, -12321]);
expect(tileCoords[1]).to.eql([15, 9647, -12320]);
expect(tileCoords[2]).to.eql([15, 9648, -12321]);
expect(tileCoords[3]).to.eql([15, 9648, -12320]);
});
});
@@ -41,16 +41,16 @@ describe('ol.source.TileVector', function() {
var projection = ol.proj.get('EPSG:3857');
var tileCoord = tileSource.getTileCoordForTileUrlFunction(
[6, -31, 41], projection);
expect(tileCoord).to.eql([6, 33, 22]);
[6, -31, -23], projection);
expect(tileCoord).to.eql([6, 33, -23]);
tileCoord = tileSource.getTileCoordForTileUrlFunction(
[6, 33, 41], projection);
expect(tileCoord).to.eql([6, 33, 22]);
[6, 33, -23], projection);
expect(tileCoord).to.eql([6, 33, -23]);
tileCoord = tileSource.getTileCoordForTileUrlFunction(
[6, 97, 41], projection);
expect(tileCoord).to.eql([6, 33, 22]);
[6, 97, -23], projection);
expect(tileCoord).to.eql([6, 33, -23]);
});
it('returns the expected tile coordinate - {wrapX: false}', function() {
@@ -64,15 +64,15 @@ describe('ol.source.TileVector', function() {
var projection = ol.proj.get('EPSG:3857');
var tileCoord = tileSource.getTileCoordForTileUrlFunction(
[6, -31, 41], projection);
[6, -31, -23], projection);
expect(tileCoord).to.eql(null);
tileCoord = tileSource.getTileCoordForTileUrlFunction(
[6, 33, 41], projection);
expect(tileCoord).to.eql([6, 33, 22]);
[6, 33, -23], projection);
expect(tileCoord).to.eql([6, 33, -23]);
tileCoord = tileSource.getTileCoordForTileUrlFunction(
[6, 97, 41], projection);
[6, 97, -23], projection);
expect(tileCoord).to.eql(null);
});
});

View File

@@ -67,17 +67,17 @@ describe('ol.source.XYZ', function() {
var projection = xyzTileSource.getProjection();
var tileUrl = xyzTileSource.tileUrlFunction(
xyzTileSource.getTileCoordForTileUrlFunction(
[6, -31, 41], projection));
[6, -31, -23], projection));
expect(tileUrl).to.eql('6/33/22');
tileUrl = xyzTileSource.tileUrlFunction(
xyzTileSource.getTileCoordForTileUrlFunction(
[6, 33, 41], projection));
[6, 33, -23], projection));
expect(tileUrl).to.eql('6/33/22');
tileUrl = xyzTileSource.tileUrlFunction(
xyzTileSource.getTileCoordForTileUrlFunction(
[6, 97, 41], projection));
[6, 97, -23], projection));
expect(tileUrl).to.eql('6/33/22');
});
@@ -89,17 +89,17 @@ describe('ol.source.XYZ', function() {
var projection = xyzTileSource.getProjection();
var tileUrl = xyzTileSource.tileUrlFunction(
xyzTileSource.getTileCoordForTileUrlFunction(
[6, 33, 150], projection));
[6, 33, 0], projection));
expect(tileUrl).to.be(undefined);
tileUrl = xyzTileSource.tileUrlFunction(
xyzTileSource.getTileCoordForTileUrlFunction(
[6, 33, 41], projection));
[6, 33, -23], projection));
expect(tileUrl).to.eql('6/33/22');
tileUrl = xyzTileSource.tileUrlFunction(
xyzTileSource.getTileCoordForTileUrlFunction(
[6, 33, -23], projection));
[6, 33, -65], projection));
expect(tileUrl).to.be(undefined);
});

View File

@@ -370,78 +370,6 @@ describe('ol.tilegrid.TileGrid', function() {
});
describe('createOriginTopLeftTileCoordTransform', function() {
it('transforms y to -y-1 for top-left origins', function() {
var tileGrid = new ol.tilegrid.TileGrid({
origin: [10, 40],
sizes: [[2, -2], [4, -4]],
resolutions: [1, 0.5],
tileSize: 10
});
var transformFn = goog.bind(
ol.tilegrid.originTopLeftTileCoordTransform, tileGrid);
expect(transformFn([0, 0, -2])).to.eql([0, 0, 1]);
expect(transformFn([0, 0, -1])).to.eql([0, 0, 0]);
expect(transformFn([1, 0, -4])).to.eql([1, 0, 3]);
expect(transformFn([1, 0, -1])).to.eql([1, 0, 0]);
});
it('transforms y to -y-1 when origin corner is not specified', function() {
var tileGrid1 = new ol.tilegrid.TileGrid({
origin: [10, 20],
resolutions: [1, 0.5],
tileSize: 10
});
var tileGrid = new ol.tilegrid.TileGrid({
origin: [10, 40],
resolutions: [1, 0.5],
tileSize: 10
});
var transformFn1 = goog.bind(
ol.tilegrid.originTopLeftTileCoordTransform, tileGrid);
var transformFn2 = goog.bind(
ol.tilegrid.originTopLeftTileCoordTransform, tileGrid1);
expect(transformFn1([0, 0, -2])).to.eql([0, 0, 1]);
expect(transformFn2([0, 0, -2])).to.eql([0, 0, 1]);
expect(transformFn1([0, 0, -1])).to.eql([0, 0, 0]);
expect(transformFn2([0, 0, -1])).to.eql([0, 0, 0]);
expect(transformFn1([1, 0, -4])).to.eql([1, 0, 3]);
expect(transformFn2([1, 0, -4])).to.eql([1, 0, 3]);
expect(transformFn1([1, 0, -1])).to.eql([1, 0, 0]);
expect(transformFn2([1, 0, -1])).to.eql([1, 0, 0]);
});
it('transforms y to height-y-1 for bottom-left origins', function() {
var tileGrid1 = new ol.tilegrid.TileGrid({
extent: [10, 20, 30, 40],
resolutions: [1, 0.5],
tileSize: 10
});
var tileGrid2 = new ol.tilegrid.TileGrid({
origin: [10, 20],
sizes: [[2, 2], [4, 4]],
resolutions: [1, 0.5],
tileSize: 10
});
var transformFn1 = goog.bind(
ol.tilegrid.originTopLeftTileCoordTransform, tileGrid1);
var transformFn2 = goog.bind(
ol.tilegrid.originTopLeftTileCoordTransform, tileGrid2);
expect(tileGrid1.getFullTileRange(0).getHeight()).to.equal(2);
expect(transformFn1([0, 0, 0])).to.eql([0, 0, 1]);
expect(transformFn2([0, 0, 0])).to.eql([0, 0, 1]);
expect(transformFn1([0, 0, 1])).to.eql([0, 0, 0]);
expect(transformFn2([0, 0, 1])).to.eql([0, 0, 0]);
expect(tileGrid1.getFullTileRange(1).getHeight()).to.equal(4);
expect(transformFn1([1, 0, 0])).to.eql([1, 0, 3]);
expect(transformFn2([1, 0, 0])).to.eql([1, 0, 3]);
expect(transformFn1([1, 0, 3])).to.eql([1, 0, 0]);
expect(transformFn2([1, 0, 3])).to.eql([1, 0, 0]);
});
});
describe('createXYZ()', function() {
it('uses defaults', function() {

View File

@@ -1,21 +0,0 @@
goog.provide('ol.test.tilegrid.Zoomify');
describe('ol.tilegrid.Zoomify', function() {
describe('constructor', function() {
it('can be constructed with minimal arguments', function() {
var instance = new ol.tilegrid.Zoomify({
resolutions: [],
extent: [],
origin: [],
tileSize: []
});
expect(instance).to.be.an(ol.tilegrid.Zoomify);
});
});
});
goog.require('ol.tilegrid.Zoomify');

View File

@@ -30,16 +30,16 @@ describe('ol.TileUrlFunction', function() {
describe('createFromTemplate', function() {
it('creates expected URL', function() {
var tileUrl = ol.TileUrlFunction.createFromTemplate('{z}/{x}/{y}');
expect(tileUrl([3, 2, 1])).to.eql('3/2/1');
expect(tileUrl([3, 2, -2])).to.eql('3/2/1');
expect(tileUrl(null)).to.be(undefined);
});
it('accepts {-y} placeholder', function() {
var tileUrl = ol.TileUrlFunction.createFromTemplate('{z}/{x}/{-y}');
expect(tileUrl([3, 2, 2])).to.eql('3/2/5');
expect(tileUrl([3, 2, -3])).to.eql('3/2/5');
});
it('replaces multiple placeholder occurrences', function() {
var tileUrl = ol.TileUrlFunction.createFromTemplate('{z}/{z}{x}{y}');
expect(tileUrl([3, 2, 1])).to.eql('3/321');
expect(tileUrl([3, 2, -2])).to.eql('3/321');
});
});
@@ -51,7 +51,7 @@ describe('ol.TileUrlFunction', function() {
'http://tile-3/{z}/{x}/{y}'
];
var tileUrlFunction = ol.TileUrlFunction.createFromTemplates(templates);
var tileCoord = [3, 2, 1];
var tileCoord = [3, 2, -2];
sinon.stub(ol.tilecoord, 'hash', function() { return 3; });
expect(tileUrlFunction(tileCoord)).to.eql('http://tile-1/3/2/1');