UNPKG

arcgis-parser

Version:

Parser for ArcGIS REST Services to human friendly JSON.

67 lines (64 loc) 1.42 kB
/** * Clean URL * * @param {string} url Url * @returns {string} Cleaned URL */ export function clean (url) { return url .replace(/%3A/g, ':') .replace(/%7B/g, '{') .replace(/%7D/g, '}') .replace(/%2C/g, ',') } /** * Map Zoom * * @param {number} scale * @returns {number} zoom level */ export function mapZoom (scale) { if (scale === null || scale === undefined) throw new Error('scale is required') if (typeof scale !== 'number') throw new Error('scale should be a number') const lookup = { 0: 591657527.591555, 1: 295828763.795777, 2: 147914381.897889, 3: 73957190.948944, 4: 36978595.474472, 5: 18489297.737236, 6: 9244648.868618, 7: 4622324.434309, 8: 2311162.217155, 9: 1155581.108577, 10: 577790.554289, 11: 288895.277144, 12: 144447.638572, 13: 72223.819286, 14: 36111.909643, 15: 18055.954822, 16: 9027.977411, 17: 4513.988705, 18: 2256.994353, 19: 1128.497176, 20: 564.248588, 21: 282.124294, 22: 141.062147, 23: 70.5310735, 24: 35, 25: 20, 26: 10, 27: 5, 28: 2.5, 29: 1, 30: 1 } for (var zoom = 0; zoom < Object.keys(lookup).length; zoom++) { if (Math.floor(scale) === Math.floor(lookup[zoom])) return zoom if (Math.floor(scale) > Math.floor(lookup[zoom])) { if (zoom === 0) return 0 return zoom - 1 } } return null }