package.tilecoord.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ol Show documentation
Show all versions of ol Show documentation
OpenLayers mapping library
The newest version!
/**
* @module ol/tilecoord
*/
/**
* An array of three numbers representing the location of a tile in a tile
* grid. The order is `z` (zoom level), `x` (column), and `y` (row).
* @typedef {Array} TileCoord
* @api
*/
/**
* @param {number} z Z.
* @param {number} x X.
* @param {number} y Y.
* @param {TileCoord} [tileCoord] Tile coordinate.
* @return {TileCoord} Tile coordinate.
*/
export function createOrUpdate(z, x, y, tileCoord) {
if (tileCoord !== undefined) {
tileCoord[0] = z;
tileCoord[1] = x;
tileCoord[2] = y;
return tileCoord;
}
return [z, x, y];
}
/**
* @param {number} z Z.
* @param {number} x X.
* @param {number} y Y.
* @return {string} Key.
*/
export function getKeyZXY(z, x, y) {
return z + '/' + x + '/' + y;
}
/**
* Get the key for a tile coord.
* @param {TileCoord} tileCoord The tile coord.
* @return {string} Key.
*/
export function getKey(tileCoord) {
return getKeyZXY(tileCoord[0], tileCoord[1], tileCoord[2]);
}
/**
* Get the tile cache key for a tile key obtained through `tile.getKey()`.
* @param {string} tileKey The tile key.
* @return {string} The cache key.
*/
export function getCacheKeyForTileKey(tileKey) {
const [z, x, y] = tileKey
.substring(tileKey.lastIndexOf('/') + 1, tileKey.length)
.split(',')
.map(Number);
return getKeyZXY(z, x, y);
}
/**
* Get a tile coord given a key.
* @param {string} key The tile coord key.
* @return {TileCoord} The tile coord.
*/
export function fromKey(key) {
return key.split('/').map(Number);
}
/**
* @param {TileCoord} tileCoord Tile coord.
* @return {number} Hash.
*/
export function hash(tileCoord) {
return hashZXY(tileCoord[0], tileCoord[1], tileCoord[2]);
}
/**
* @param {number} z The tile z coordinate.
* @param {number} x The tile x coordinate.
* @param {number} y The tile y coordinate.
* @return {number} Hash.
*/
export function hashZXY(z, x, y) {
return (x << z) + y;
}
/**
* @param {TileCoord} tileCoord Tile coordinate.
* @param {!import("./tilegrid/TileGrid.js").default} tileGrid Tile grid.
* @return {boolean} Tile coordinate is within extent and zoom level range.
*/
export function withinExtentAndZ(tileCoord, tileGrid) {
const z = tileCoord[0];
const x = tileCoord[1];
const y = tileCoord[2];
if (tileGrid.getMinZoom() > z || z > tileGrid.getMaxZoom()) {
return false;
}
const tileRange = tileGrid.getFullTileRange(z);
if (!tileRange) {
return true;
}
return tileRange.containsXY(x, y);
}