diff --git a/lib/OpenLayers/Control/PinchZoom.js b/lib/OpenLayers/Control/PinchZoom.js index f55d08e9fc..009d870ff9 100644 --- a/lib/OpenLayers/Control/PinchZoom.js +++ b/lib/OpenLayers/Control/PinchZoom.js @@ -105,12 +105,10 @@ OpenLayers.Control.PinchZoom = OpenLayers.Class(OpenLayers.Control, { var current = (this.preserveCenter) ? this.map.getPixelFromLonLat(this.map.getCenter()) : evt.xy; - var dx = Math.round((current.x - pinchOrigin.x) + (scale - 1) * (containerOrigin.x - pinchOrigin.x)); - var dy = Math.round((current.y - pinchOrigin.y) + (scale - 1) * (containerOrigin.y - pinchOrigin.y)); + var dx = Math.round((containerOrigin.x + current.x - pinchOrigin.x) + (scale - 1) * (containerOrigin.x - pinchOrigin.x)); + var dy = Math.round((containerOrigin.y + current.y - pinchOrigin.y) + (scale - 1) * (containerOrigin.y - pinchOrigin.y)); - this.applyTransform( - "translate(" + dx + "px, " + dy + "px) scale(" + scale + ")" - ); + this.map.applyTransform(dx, dy, scale); this.currentCenter = current; }, diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index ba7e7006fe..2a6b958a7a 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -1758,17 +1758,16 @@ OpenLayers.Map = OpenLayers.Class({ } this.center = null; if (dx) { - this.layerContainerDiv.style.left = - (this.layerContainerOriginPx.x -= dx) + "px"; + this.layerContainerOriginPx.x -= dx; this.minPx.x -= dx; this.maxPx.x -= dx; } if (dy) { - this.layerContainerDiv.style.top = - (this.layerContainerOriginPx.y -= dy) + "px"; + this.layerContainerOriginPx.y -= dy; this.minPx.y -= dy; this.maxPx.y -= dy; } + this.applyTransform(); var layer, i, len; for (i=0, len=this.layers.length; i