UNPKG

heli-agri

Version:

HeliAgri is a high-performance, feature-packed library for creating interactive maps on the web. It can display map tiles, vector data and markers loaded from any source on any web page. OpenLayers has been developed to further the use of geographic infor

97 lines (87 loc) 2.38 kB
/** * @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<number>} 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 (tileCoord[1] << tileCoord[0]) + tileCoord[2]; } /** * @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); }