From c898cda2e6cbf42375e913d22b3dc0a0cb5c734e Mon Sep 17 00:00:00 2001 From: Thomas Chandelle Date: Fri, 25 Nov 2016 16:51:05 +0100 Subject: [PATCH 1/2] Generate projection transform function only when requested --- src/ol/proj/index.js | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/src/ol/proj/index.js b/src/ol/proj/index.js index f88d7bf714..8210e5d185 100644 --- a/src/ol/proj/index.js +++ b/src/ol/proj/index.js @@ -152,20 +152,6 @@ ol.proj.Projection = function(options) { if (options.units === undefined) { this.units_ = def.units; } - var currentCode, currentDef, currentProj, proj4Transform; - for (currentCode in projections) { - currentDef = proj4js.defs(currentCode); - if (currentDef !== undefined) { - currentProj = ol.proj.get(currentCode); - if (currentDef === def) { - ol.proj.addEquivalentProjections([currentProj, this]); - } else { - proj4Transform = proj4js(currentCode, code); - ol.proj.addCoordinateTransforms(currentProj, this, - proj4Transform.forward, proj4Transform.inverse); - } - } - } } } } @@ -739,6 +725,27 @@ ol.proj.getTransformFromProjections = function(sourceProjection, destinationProj var transform; if (sourceCode in transforms && destinationCode in transforms[sourceCode]) { transform = transforms[sourceCode][destinationCode]; + } else if (ol.ENABLE_PROJ4JS) { + var proj4js = ol.proj.proj4_ || window['proj4']; + if (typeof proj4js == 'function') { + var sourceDef = proj4js.defs(sourceCode); + var destinationDef = proj4js.defs(destinationCode); + + if (sourceDef !== undefined && destinationDef !== undefined) { + if (sourceDef === destinationDef) { + ol.proj.addEquivalentProjections([destinationProjection, sourceProjection]); + } else { + var proj4Transform = proj4js(destinationCode, sourceCode); + ol.proj.addCoordinateTransforms(destinationProjection, sourceProjection, + proj4Transform.forward, proj4Transform.inverse); + } + if (sourceCode in transforms && destinationCode in transforms[sourceCode]) { + transform = transforms[sourceCode][destinationCode]; + } + } else { + transform = undefined; + } + } } if (transform === undefined) { ol.DEBUG && console.assert(transform !== undefined, 'transform should be defined'); From fe758c26069937fa1b5e495620f841a27f2503f2 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Tue, 29 Nov 2016 12:14:11 +0100 Subject: [PATCH 2/2] Simplify and make the compiler happy --- src/ol/proj/index.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/ol/proj/index.js b/src/ol/proj/index.js index 8210e5d185..019398f74e 100644 --- a/src/ol/proj/index.js +++ b/src/ol/proj/index.js @@ -723,9 +723,7 @@ ol.proj.getTransformFromProjections = function(sourceProjection, destinationProj var sourceCode = sourceProjection.getCode(); var destinationCode = destinationProjection.getCode(); var transform; - if (sourceCode in transforms && destinationCode in transforms[sourceCode]) { - transform = transforms[sourceCode][destinationCode]; - } else if (ol.ENABLE_PROJ4JS) { + if (ol.ENABLE_PROJ4JS && !(sourceCode in transforms && destinationCode in transforms[sourceCode])) { var proj4js = ol.proj.proj4_ || window['proj4']; if (typeof proj4js == 'function') { var sourceDef = proj4js.defs(sourceCode); @@ -739,15 +737,12 @@ ol.proj.getTransformFromProjections = function(sourceProjection, destinationProj ol.proj.addCoordinateTransforms(destinationProjection, sourceProjection, proj4Transform.forward, proj4Transform.inverse); } - if (sourceCode in transforms && destinationCode in transforms[sourceCode]) { - transform = transforms[sourceCode][destinationCode]; - } - } else { - transform = undefined; } } } - if (transform === undefined) { + if (sourceCode in transforms && destinationCode in transforms[sourceCode]) { + transform = transforms[sourceCode][destinationCode]; + } else { ol.DEBUG && console.assert(transform !== undefined, 'transform should be defined'); transform = ol.proj.identityTransform; }