diff --git a/src/ol/proj.js b/src/ol/proj.js index 3c219871cf..099f6277b4 100644 --- a/src/ol/proj.js +++ b/src/ol/proj.js @@ -10,7 +10,7 @@ import Projection from './proj/Projection.js'; import Units from './proj/Units.js'; import _ol_proj_proj4_ from './proj/proj4.js'; import _ol_proj_projections_ from './proj/projections.js'; -import _ol_proj_transforms_ from './proj/transforms.js'; +import {add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc} from './proj/transforms.js'; /** @@ -93,7 +93,7 @@ export function identityTransform(input, opt_output, opt_dimension) { */ export function addProjection(projection) { _ol_proj_projections_.add(projection.getCode(), projection); - _ol_proj_transforms_.add(projection, projection, cloneTransform); + addTransformFunc(projection, projection, cloneTransform); } @@ -204,7 +204,7 @@ export function addEquivalentProjections(projections) { projections.forEach(function(source) { projections.forEach(function(destination) { if (source !== destination) { - _ol_proj_transforms_.add(source, destination, cloneTransform); + addTransformFunc(source, destination, cloneTransform); } }); }); @@ -227,8 +227,8 @@ export function addEquivalentProjections(projections) { export function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) { projections1.forEach(function(projection1) { projections2.forEach(function(projection2) { - _ol_proj_transforms_.add(projection1, projection2, forwardTransform); - _ol_proj_transforms_.add(projection2, projection1, inverseTransform); + addTransformFunc(projection1, projection2, forwardTransform); + addTransformFunc(projection2, projection1, inverseTransform); }); }); } @@ -239,7 +239,7 @@ export function addEquivalentTransforms(projections1, projections2, forwardTrans */ export function clearAllProjections() { _ol_proj_projections_.clear(); - _ol_proj_transforms_.clear(); + clearTransformFuncs(); } @@ -314,10 +314,8 @@ export function createTransformFromCoordinateTransform(coordTransform) { export function addCoordinateTransforms(source, destination, forward, inverse) { var sourceProj = get(source); var destProj = get(destination); - _ol_proj_transforms_.add(sourceProj, destProj, - createTransformFromCoordinateTransform(forward)); - _ol_proj_transforms_.add(destProj, sourceProj, - createTransformFromCoordinateTransform(inverse)); + addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward)); + addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse)); } @@ -392,7 +390,6 @@ export function equivalent(projection1, projection2) { export function getTransformFromProjections(sourceProjection, destinationProjection) { var sourceCode = sourceProjection.getCode(); var destinationCode = destinationProjection.getCode(); - var transformFunc = _ol_proj_transforms_.get(sourceCode, destinationCode); if (!transformFunc) { var proj4js = _ol_proj_proj4_.get(); if (typeof proj4js == 'function') { @@ -411,6 +408,7 @@ export function getTransformFromProjections(sourceProjection, destinationProject } } } + var transformFunc = getTransformFunc(sourceCode, destinationCode); if (!transformFunc) { transformFunc = identityTransform; } diff --git a/src/ol/proj/transforms.js b/src/ol/proj/transforms.js index f7fc4068b7..c54e3b93b2 100644 --- a/src/ol/proj/transforms.js +++ b/src/ol/proj/transforms.js @@ -2,22 +2,21 @@ * @module ol/proj/transforms */ import _ol_obj_ from '../obj.js'; -var _ol_proj_transforms_ = {}; /** * @private * @type {Object.>} */ -_ol_proj_transforms_.cache_ = {}; +var transforms = {}; /** * Clear the transform cache. */ -_ol_proj_transforms_.clear = function() { - _ol_proj_transforms_.cache_ = {}; -}; +export function clear() { + transforms = {}; +} /** @@ -28,15 +27,14 @@ _ol_proj_transforms_.clear = function() { * @param {ol.proj.Projection} destination Destination. * @param {ol.TransformFunction} transformFn Transform. */ -_ol_proj_transforms_.add = function(source, destination, transformFn) { +export function add(source, destination, transformFn) { var sourceCode = source.getCode(); var destinationCode = destination.getCode(); - var transforms = _ol_proj_transforms_.cache_; if (!(sourceCode in transforms)) { transforms[sourceCode] = {}; } transforms[sourceCode][destinationCode] = transformFn; -}; +} /** @@ -48,17 +46,16 @@ _ol_proj_transforms_.add = function(source, destination, transformFn) { * @param {ol.proj.Projection} destination Destination projection. * @return {ol.TransformFunction} transformFn The unregistered transform. */ -_ol_proj_transforms_.remove = function(source, destination) { +export function remove(source, destination) { var sourceCode = source.getCode(); var destinationCode = destination.getCode(); - var transforms = _ol_proj_transforms_.cache_; var transform = transforms[sourceCode][destinationCode]; delete transforms[sourceCode][destinationCode]; if (_ol_obj_.isEmpty(transforms[sourceCode])) { delete transforms[sourceCode]; } return transform; -}; +} /** @@ -67,12 +64,10 @@ _ol_proj_transforms_.remove = function(source, destination) { * @param {string} destinationCode The code for the destination projection. * @return {ol.TransformFunction|undefined} The transform function (if found). */ -_ol_proj_transforms_.get = function(sourceCode, destinationCode) { +export function get(sourceCode, destinationCode) { var transform; - var transforms = _ol_proj_transforms_.cache_; if (sourceCode in transforms && destinationCode in transforms[sourceCode]) { transform = transforms[sourceCode][destinationCode]; } return transform; -}; -export default _ol_proj_transforms_; +} diff --git a/test/spec/ol/format/kml.test.js b/test/spec/ol/format/kml.test.js index 2210fe34cd..79c3c42504 100644 --- a/test/spec/ol/format/kml.test.js +++ b/test/spec/ol/format/kml.test.js @@ -12,7 +12,7 @@ import Point from '../../../../src/ol/geom/Point.js'; import Polygon from '../../../../src/ol/geom/Polygon.js'; import {addProjection, addCoordinateTransforms, transform, get as getProjection} from '../../../../src/ol/proj.js'; import _ol_proj_Projection_ from '../../../../src/ol/proj/Projection.js'; -import _ol_proj_transforms_ from '../../../../src/ol/proj/transforms.js'; +import {remove as removeTransform} from '../../../../src/ol/proj/transforms.js'; import _ol_style_Circle_ from '../../../../src/ol/style/Circle.js'; import _ol_style_Fill_ from '../../../../src/ol/style/Fill.js'; import _ol_style_Icon_ from '../../../../src/ol/style/Icon.js'; @@ -386,10 +386,8 @@ describe('ol.format.KML', function() { ''; expect(node).to.xmleql(_ol_xml_.parse(text)); - _ol_proj_transforms_.remove( - getProjection('EPSG:4326'), getProjection('double')); - _ol_proj_transforms_.remove( - getProjection('double'), getProjection('EPSG:4326')); + removeTransform(getProjection('EPSG:4326'), getProjection('double')); + removeTransform(getProjection('double'), getProjection('EPSG:4326')); }); it('can write XYM Point geometries', function() { diff --git a/test/spec/ol/proj/transforms.test.js b/test/spec/ol/proj/transforms.test.js index ff947ea584..80d674321d 100644 --- a/test/spec/ol/proj/transforms.test.js +++ b/test/spec/ol/proj/transforms.test.js @@ -1,13 +1,13 @@ import _ol_proj_Projection_ from '../../../../src/ol/proj/Projection.js'; -import _ol_proj_transforms_ from '../../../../src/ol/proj/transforms.js'; +import * as transforms from '../../../../src/ol/proj/transforms.js'; -describe('ol.proj.transforms.remove()', function() { +describe('transforms.remove()', function() { var extent = [180, -90, 180, 90]; var units = 'degrees'; - it('removes functions cached by ol.proj.transforms.add()', function() { + it('removes functions cached by transforms.add()', function() { var foo = new _ol_proj_Projection_({ code: 'foo', units: units, @@ -21,15 +21,12 @@ describe('ol.proj.transforms.remove()', function() { var transform = function(input, output, dimension) { return input; }; - _ol_proj_transforms_.add(foo, bar, transform); - var cache = _ol_proj_transforms_.cache_; - expect(cache).not.to.be(undefined); - expect(cache.foo).not.to.be(undefined); - expect(cache.foo.bar).to.be(transform); + transforms.add(foo, bar, transform); + expect(transforms.get('foo', 'bar')).to.be(transform); - var removed = _ol_proj_transforms_.remove(foo, bar); + var removed = transforms.remove(foo, bar); expect(removed).to.be(transform); - expect(cache.foo).to.be(undefined); + expect(transforms.get('foo', 'bar')).to.be(undefined); }); });