diff --git a/src/ol/PluggableMap.js b/src/ol/PluggableMap.js index 82bd7dee49..83c1869fce 100644 --- a/src/ol/PluggableMap.js +++ b/src/ol/PluggableMap.js @@ -1208,15 +1208,18 @@ PluggableMap.prototype.renderFrame_ = function(time) { layerStates[getUid(layerStatesArray[i].layer)] = layerStatesArray[i]; } viewState = view.getState(); - const center = viewState.center; - const pixelResolution = viewState.resolution / this.pixelRatio_; - center[0] = Math.round(center[0] / pixelResolution) * pixelResolution; - center[1] = Math.round(center[1] / pixelResolution) * pixelResolution; + let focus = this.focus_; + if (!focus) { + focus = viewState.center; + const pixelResolution = viewState.resolution / this.pixelRatio_; + focus[0] = Math.round(focus[0] / pixelResolution) * pixelResolution; + focus[1] = Math.round(focus[1] / pixelResolution) * pixelResolution; + } frameState = /** @type {olx.FrameState} */ ({ animate: false, coordinateToPixelTransform: this.coordinateToPixelTransform_, extent: extent, - focus: !this.focus_ ? center : this.focus_, + focus: focus, index: this.frameIndex_++, layerStates: layerStates, layerStatesArray: layerStatesArray, diff --git a/src/ol/interaction/DragPan.js b/src/ol/interaction/DragPan.js index 455d6229f4..055b876e90 100644 --- a/src/ol/interaction/DragPan.js +++ b/src/ol/interaction/DragPan.js @@ -77,11 +77,10 @@ function handleDragEvent(mapBrowserEvent) { const deltaY = centroid[1] - this.lastCentroid[1]; const map = mapBrowserEvent.map; const view = map.getView(); - const viewState = view.getState(); let center = [deltaX, deltaY]; - scaleCoordinate(center, viewState.resolution); - rotateCoordinate(center, viewState.rotation); - addCoordinate(center, viewState.center); + scaleCoordinate(center, view.getResolution()); + rotateCoordinate(center, view.getRotation()); + addCoordinate(center, view.getCenter()); center = view.constrainCenter(center); view.setCenter(center); } diff --git a/src/ol/render/Feature.js b/src/ol/render/Feature.js index 765ccd84eb..aae1cc60ee 100644 --- a/src/ol/render/Feature.js +++ b/src/ol/render/Feature.js @@ -73,15 +73,15 @@ const RenderFeature = function(type, flatCoordinates, ends, properties, id) { */ this.properties_ = properties; - - /** - * @private - * @type {ol.Transform} - */ - this.tmpTransform_ = createTransform(); }; +/** + * @type {ol.Transform} + */ +const tmpTransform = createTransform(); + + /** * Get a feature property by its key. * @param {string} key Key @@ -267,12 +267,11 @@ RenderFeature.prototype.transform = function(source, destination) { const pixelExtent = source.getExtent(); const projectedExtent = source.getWorldExtent(); const scale = getHeight(projectedExtent) / getHeight(pixelExtent); - const transform = this.tmpTransform_; - composeTransform(transform, + composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0); transform2D(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2, - transform, this.flatCoordinates_); + tmpTransform, this.flatCoordinates_); }; export default RenderFeature;