diff --git a/src/component/helper/MapDraw.js b/src/component/helper/MapDraw.js index d1943c0e9e..2965167364 100644 --- a/src/component/helper/MapDraw.js +++ b/src/component/helper/MapDraw.js @@ -181,13 +181,13 @@ MapDraw.prototype = { var regionsGroup = this._regionsGroup; var group = this.group; - if (geo._roamTransformable.transform) { - group.transform = Array.prototype.slice.call(geo._roamTransformable.transform); - group.decomposeTransform(); - } + var transformInfo = geo.getTransformInfo(); + group.transform = transformInfo.roamTransform; + group.decomposeTransform(); + group.dirty(); - var scale = geo._rawTransformable.scale; - var position = geo._rawTransformable.position; + var scale = transformInfo.rawScale; + var position = transformInfo.rawPosition; regionsGroup.removeAll(); diff --git a/src/coord/View.js b/src/coord/View.js index 03c4b7dc11..4043107057 100644 --- a/src/coord/View.js +++ b/src/coord/View.js @@ -185,7 +185,6 @@ View.prototype = { /** * Remove roam */ - _updateCenterAndZoom: function () { // Must update after view transform updated var rawTransformMatrix = this._rawTransformable.getLocalTransform(); @@ -229,6 +228,16 @@ View.prototype = { this.decomposeTransform(); }, + getTransformInfo: function () { + var roamTransform = this._roamTransformable.transform; + var rawTransformable = this._rawTransformable; + return { + roamTransform: roamTransform ? zrUtil.slice(roamTransform) : matrix.create(), + rawScale: zrUtil.slice(rawTransformable.scale), + rawPosition: zrUtil.slice(rawTransformable.position) + }; + }, + /** * @return {module:zrender/core/BoundingRect} */ diff --git a/test/geo-update.html b/test/geo-update.html new file mode 100644 index 0000000000..0760b14344 --- /dev/null +++ b/test/geo-update.html @@ -0,0 +1,382 @@ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +