diff --git a/src/ol/tilecoord.js b/src/ol/tilecoord.js index b7b082c70e..63740f7535 100644 --- a/src/ol/tilecoord.js +++ b/src/ol/tilecoord.js @@ -31,6 +31,26 @@ ol.tilecoord.getKeyZXY = function(z, x, y) { }; +/** + * Get the key for a tile coord. + * @param {ol.TileCoord} tileCoord The tile coord. + * @return {string} Key. + */ +ol.tilecoord.getKey = function(tileCoord) { + return ol.tilecoord.getKeyZXY(tileCoord[0], tileCoord[1], tileCoord[2]); +}; + + +/** + * Get a tile coord given a key. + * @param {string} key The tile coord key. + * @return {ol.TileCoord} The tile coord. + */ +ol.tilecoord.fromKey = function(key) { + return key.split('/').map(Number); +}; + + /** * @param {ol.TileCoord} tileCoord Tile coord. * @return {number} Hash. diff --git a/test/spec/ol/tilecoord.test.js b/test/spec/ol/tilecoord.test.js index a42a2f3efb..f1e4cd44fa 100644 --- a/test/spec/ol/tilecoord.test.js +++ b/test/spec/ol/tilecoord.test.js @@ -1,5 +1,3 @@ - - goog.require('ol.tilecoord'); goog.require('ol.tilegrid.TileGrid'); @@ -23,6 +21,23 @@ describe('ol.TileCoord', function() { }); }); + describe('getKey()', function() { + it('returns a key for a tile coord', function() { + var key = ol.tilecoord.getKey([1, 2, 3]); + expect(key).to.eql('1/2/3'); + }); + }); + + describe('fromKey()', function() { + it('returns a tile coord given a key', function() { + var tileCoord = [1, 2, 3]; + var key = ol.tilecoord.getKey(tileCoord); + + var returned = ol.tilecoord.fromKey(key); + expect(returned).to.eql(tileCoord); + }); + }); + describe('hash', function() { it('produces different hashes for different tile coords', function() { var tileCoord1 = [3, 2, 1];