From 3ab9a1f63bb2d70e3a55a9a1f3f359624aeaffc6 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Fri, 14 Dec 2012 17:27:44 +0100 Subject: [PATCH] No closure, to make testing easier --- lib/OpenLayers/Map.js | 62 ++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 7b449376c9..c8963747ef 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -6,6 +6,7 @@ /** * @requires OpenLayers/BaseTypes/Class.js * @requires OpenLayers/Util.js + * @requires OpenLayers/Util/vendorPrefix.js * @requires OpenLayers/Events.js * @requires OpenLayers/Tween.js * @requires OpenLayers/Projection.js @@ -2659,36 +2660,41 @@ OpenLayers.Map = OpenLayers.Class({ * the map's * scale - {Number} scale. Defaults to 1 if not provided. */ - applyTransform: (function() { - var transformProperty, - translatePrefix = 'translate3d(', - translatePostfix = ',0)', - scalePrefix = 'scale3d(', - scalePostfix = ',1)'; - return function(dx, dy, scale) { - var origin = this.layerContainerOriginPx; - dx = dx || origin.x; - dy = dy || origin.y; - scale = scale || 1; - var style = this.layerContainerDiv.style; - if (transformProperty === undefined) { - transformProperty = OpenLayers.Util.vendorPrefix.style("transform"); - style[transformProperty] = translatePrefix + '0,0' + translatePostfix; - if (!~style[transformProperty].indexOf(translatePrefix)) { - translatePrefix = 'translate('; - translatePostfix = ')'; - scalePrefix = 'scale('; - scalePostfix = ')'; + applyTransform: function(dx, dy, scale) { + var origin = this.layerContainerOriginPx; + dx = dx || origin.x; + dy = dy || origin.y; + scale = scale || 1; + + var style = this.layerContainerDiv.style, + transform = this.applyTransform.transform, + template = this.applyTransform.template; + + if (transform === undefined) { + transform = OpenLayers.Util.vendorPrefix.style('transform'); + this.applyTransform.transform = transform; + } + + if (transform) { + if (!template) { + // try translate3d + template = ['translate3d(', ',0) ', 'scale3d(', ',1)']; + style[transform] = [template[0], '0,0', template[1]].join(''); + // if translate3d does not stick, use translate and scale + if (!~style[transform].indexOf(template[0])) { + template = ['translate(', ') ', 'scale(', ')']; } + this.applyTransform.template = template; } - if (transformProperty) { - style[transformProperty] = translatePrefix + dx + 'px,' + dy + 'px' + translatePostfix + scalePrefix + scale + ',' + scale + scalePostfix; - } else { - style.left = dx + 'px'; - style.top = dy + 'px'; - } - }; - }()), + style[transform] = [ + template[0], dx, 'px,', dy, 'px', template[1], + template[2], scale, ',', scale, template[3] + ].join(''); + } else { + style.left = dx + 'px'; + style.top = dy + 'px'; + } + }, CLASS_NAME: "OpenLayers.Map" });