MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //home/cafsindia/snap.cafsinfotech.in/node_modules/mapbox-gl/src/geo/projection/index.js
// @flow
import Albers from './albers.js';
import EqualEarth from './equal_earth.js';
import Equirectangular from './equirectangular.js';
import LambertConformalConic from './lambert.js';
import Mercator from './mercator.js';
import NaturalEarth from './natural_earth.js';
import WinkelTripel from './winkel_tripel.js';
import CylindricalEqualArea from './cylindrical_equal_area.js';
import Globe from './globe.js';

import type {ProjectionSpecification} from '../../style-spec/types.js';
import type Projection from './projection.js';

export function getProjection(config: ProjectionSpecification): Projection {

    const parallels = config.parallels;
    const isDegenerateConic = parallels ? Math.abs(parallels[0] + parallels[1]) < 0.01 : false;

    switch (config.name) {
    case 'mercator':
        return new Mercator(config);
    case 'equirectangular':
        return new Equirectangular(config);
    case 'naturalEarth':
        return new NaturalEarth(config);
    case 'equalEarth':
        return new EqualEarth(config);
    case 'winkelTripel':
        return new WinkelTripel(config);
    case 'albers':
        return isDegenerateConic ? new CylindricalEqualArea(config) : new Albers(config);
    case 'lambertConformalConic':
        return isDegenerateConic ? new CylindricalEqualArea(config) : new LambertConformalConic(config);
    case 'globe':
        return new Globe(config);
    }

    throw new Error(`Invalid projection name: ${config.name}`);
}