UNPKG

@giro3d/giro3d

Version:

A JS/WebGL framework for 3D geospatial data visualization

30 lines (22 loc) 846 B
/* * Copyright (c) 2015-2018, IGN France. * Copyright (c) 2018-2026, Giro3D team. * SPDX-License-Identifier: MIT */ import proj4 from 'proj4'; import type { CreateValueFn } from '../../utils/NestedMap'; import type CoordinateSystem from './CoordinateSystem'; import NestedMap from '../../utils/NestedMap'; type SrcCrs = CoordinateSystem; type DstCrs = CoordinateSystem; const createConverter: CreateValueFn<SrcCrs, DstCrs, proj4.Converter> = ( src: SrcCrs, dst: DstCrs, ) => proj4(src.id, dst.id); const cache: NestedMap<SrcCrs, DstCrs, proj4.Converter> = new NestedMap(); /** * Returns a coordinate converter from the specified source and destination CRSes. */ export function getConverter(crsIn: CoordinateSystem, crsOut: CoordinateSystem): proj4.Converter { return cache.getOrCreate(crsIn, crsOut, createConverter); }