mirror of
https://github.com/proj4js/proj4js.git
synced 2026-01-25 16:26:11 +00:00
56 lines
1.1 KiB
JavaScript
56 lines
1.1 KiB
JavaScript
import merc from './projections/merc';
|
|
import longlat from './projections/longlat';
|
|
/** @type {Array<Partial<import('./Proj').default>>} */
|
|
var projs = [merc, longlat];
|
|
var names = {};
|
|
var projStore = [];
|
|
|
|
/**
|
|
* @param {import('./Proj').default} proj
|
|
* @param {number} i
|
|
*/
|
|
export function add(proj, i) {
|
|
var len = projStore.length;
|
|
if (!proj.names) {
|
|
console.log(i);
|
|
return true;
|
|
}
|
|
projStore[len] = proj;
|
|
proj.names.forEach(function (n) {
|
|
names[n.toLowerCase()] = len;
|
|
});
|
|
return this;
|
|
}
|
|
|
|
export function getNormalizedProjName(n) {
|
|
return n.replace(/[-\(\)\s]+/g, ' ').trim().replace(/ /g, '_');
|
|
}
|
|
|
|
/**
|
|
* Get a projection by name.
|
|
* @param {string} name
|
|
* @returns {import('./Proj').default|false}
|
|
*/
|
|
export function get(name) {
|
|
if (!name) {
|
|
return false;
|
|
}
|
|
var n = name.toLowerCase();
|
|
if (typeof names[n] !== 'undefined' && projStore[names[n]]) {
|
|
return projStore[names[n]];
|
|
}
|
|
n = getNormalizedProjName(n);
|
|
if (n in names && projStore[names[n]]) {
|
|
return projStore[names[n]];
|
|
}
|
|
}
|
|
|
|
export function start() {
|
|
projs.forEach(add);
|
|
}
|
|
export default {
|
|
start: start,
|
|
add: add,
|
|
get: get
|
|
};
|