UNPKG

openlayers

Version:

Build tools and sources for developing OpenLayers based mapping applications

81 lines (69 loc) 2.58 kB
goog.provide('ol.proj.transforms'); goog.require('ol'); goog.require('ol.obj'); /** * @private * @type {Object.<string, Object.<string, ol.TransformFunction>>} */ ol.proj.transforms.cache_ = {}; /** * Clear the transform cache. */ ol.proj.transforms.clear = function() { ol.proj.transforms.cache_ = {}; }; /** * Registers a conversion function to convert coordinates from the source * projection to the destination projection. * * @param {ol.proj.Projection} source Source. * @param {ol.proj.Projection} destination Destination. * @param {ol.TransformFunction} transformFn Transform. */ ol.proj.transforms.add = function(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; }; /** * Unregisters the conversion function to convert coordinates from the source * projection to the destination projection. This method is used to clean up * cached transforms during testing. * * @param {ol.proj.Projection} source Source projection. * @param {ol.proj.Projection} destination Destination projection. * @return {ol.TransformFunction} transformFn The unregistered transform. */ ol.proj.transforms.remove = function(source, destination) { var sourceCode = source.getCode(); var destinationCode = destination.getCode(); var transforms = ol.proj.transforms.cache_; ol.DEBUG && console.assert(sourceCode in transforms, 'sourceCode should be in transforms'); ol.DEBUG && console.assert(destinationCode in transforms[sourceCode], 'destinationCode should be in transforms of sourceCode'); var transform = transforms[sourceCode][destinationCode]; delete transforms[sourceCode][destinationCode]; if (ol.obj.isEmpty(transforms[sourceCode])) { delete transforms[sourceCode]; } return transform; }; /** * Get a transform given a source code and a destination code. * @param {string} sourceCode The code for the source projection. * @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) { var transform; var transforms = ol.proj.transforms.cache_; if (sourceCode in transforms && destinationCode in transforms[sourceCode]) { transform = transforms[sourceCode][destinationCode]; } return transform; };