From 0a48edbedec30ec108f5221b0d887b215b613c17 Mon Sep 17 00:00:00 2001 From: hu de yi Date: Thu, 19 Mar 2026 15:55:25 +0800 Subject: [PATCH 1/2] fix:fix vt symbol value is function-type update --- .../vt/src/layer/plugins/painters/Painter.js | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/packages/vt/src/layer/plugins/painters/Painter.js b/packages/vt/src/layer/plugins/painters/Painter.js index 7e3e508c55..2ef8e1227f 100644 --- a/packages/vt/src/layer/plugins/painters/Painter.js +++ b/packages/vt/src/layer/plugins/painters/Painter.js @@ -32,6 +32,10 @@ const levelNFilter = mesh => { return mesh.properties.level > 0; }; +function isObjectOrArray(v) { + return v && (maptalks.Util.isObject(v) || Array.isArray(v)); +} + class Painter { static getBloomSymbol() { return ['bloom']; @@ -813,13 +817,43 @@ class Painter { if (!this._symbol) { return false; } - const refresh = this._isNeedRefreshStyle(this.symbolDef[i] || {}, all); + let refresh = this._isNeedRefreshStyle(this.symbolDef[i] || {}, all); if (this._invisibleWhenCreated[i] && all.visible !== false) { this._invisibleWhenCreated[i] = false; return true; } this.symbolDef[i] = copyJSON(all); const symbol = this._symbol[i]; + const newSymbol = this.symbolDef[i]; + const keys = Object.keys(newSymbol); + + for (let j = 0, len = keys.length; j < len; j++) { + const key2 = keys[j]; + const v2 = newSymbol[key2]; + //function-type the original value + const key1 = `_${key2}`; + const v1 = symbol[key1]; + if (v2 === v1) { + continue; + } + //function-type or array properties diff + if (isObjectOrArray(v1) && isObjectOrArray(v2)) { + try { + const str1 = JSON.stringify(v1); + const str2 = JSON.stringify(v2); + if (str1 === str2) { + continue; + } + + } catch (error) { + console.error(error); + } + } + if (isFunctionDefinition(v1) !== isFunctionDefinition(v2)) { + refresh = true; + } + + } for (const p in symbol) { delete symbol[p]; } From 6ef294613813da99f89b9e9f98cb41fbda9daea8 Mon Sep 17 00:00:00 2001 From: hu de yi Date: Thu, 19 Mar 2026 16:12:01 +0800 Subject: [PATCH 2/2] updates --- packages/vt/src/layer/plugins/painters/Painter.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/vt/src/layer/plugins/painters/Painter.js b/packages/vt/src/layer/plugins/painters/Painter.js index 2ef8e1227f..2cdc92b0e0 100644 --- a/packages/vt/src/layer/plugins/painters/Painter.js +++ b/packages/vt/src/layer/plugins/painters/Painter.js @@ -849,7 +849,10 @@ class Painter { console.error(error); } } - if (isFunctionDefinition(v1) !== isFunctionDefinition(v2)) { + if (isObjectOrArray(v1) && isFunctionDefinition(v1) && !isFunctionDefinition(v2)) { + refresh = true; + } + if (isObjectOrArray(v2) && isFunctionDefinition(v2) && !isFunctionDefinition(v1)) { refresh = true; }