all files / src/olHelpers/ zoomResolutionConvert.ts

52.94% Statements 9/17
11.11% Branches 1/9
66.67% Functions 2/3
52.94% Lines 9/17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79                                                                                      18×                 18×                                      
/**
 * Created by gavorhes on 12/14/2015.
 */
 
import provide from '../util/provide';
const nm = provide('olHelpers.zoomResolutionConvert');
 
let _zoomResLookup = [
    156543.03392804097, //0
    78271.51696402048, //1
    39135.75848201024, //2
    19567.87924100512, //3
    9783.93962050256, //4
    4891.96981025128, //5
    2445.98490512564, //6
    1222.99245256282, //7
    611.49622628141, //8
    305.748113140705, //9
    152.8740565703525, //10
    76.43702828517625, //11
    38.21851414258813, //12
    19.109257071294063, //13
    9.554628535647032, //14
    4.777314267823516, //15
    2.388657133911758, //16
    1.194328566955879, //17
    0.5971642834779395, //18
    0.29858214173896974, //19
    0.14929107086948487, //20
    0.07464553543474244, //21
    0.03732276771737122, //22
    0.01866138385868561, //23
    0.009330691929342804, //24
    0.004665345964671402, //25
    0.002332672982335701, //26
    0.0011663364911678506, //27
    0.0005831682455839253 //28
];
 
/**
 * Get the resolution given the zoom level
 * @param {number} zoomLevel - the zoom level
 * @returns {number|*} the map resolution
 */
export function zoomToResolution(zoomLevel) {
    "use strict";
 
    Iif (typeof zoomLevel == 'number') {
        if (zoomLevel % 1 === 0 && zoomLevel >= 0 && zoomLevel <= 28) {
            return _zoomResLookup[zoomLevel];
        } else {
            console.log(`invalid zoom level provided: ${zoomLevel}`);
 
            return undefined;
        }
    } else {
        return undefined;
    }
}
nm.zoomToResolution = zoomToResolution;
 
 
/**
 * Get resolution from the zoom level
 * @param {number} resolution - the resolution
 * @returns {number|*} the zoom level
 */
export function resolutionToZoom(resolution){
    for (let i = 0; i < _zoomResLookup.length; i++){
        if (resolution >= _zoomResLookup[i] ){
            return i;
        }
    }
 
    return 0;
}
 
nm.resolutionToZoom = resolutionToZoom;