From 6f0db36501336185ce00ef8e73402f3d6ef292fe Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 15 三月 2024 10:10:36 +0800 Subject: [PATCH] # --- zy-asrs-flow/src/pages/map/utils.js | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) diff --git a/zy-asrs-flow/src/pages/map/utils.js b/zy-asrs-flow/src/pages/map/utils.js index 6879330..9db5e6d 100644 --- a/zy-asrs-flow/src/pages/map/utils.js +++ b/zy-asrs-flow/src/pages/map/utils.js @@ -276,4 +276,41 @@ }) return options; +} + +export const adaptScreen = () => { + if (!mapContainer || !app) { + return; + } + if (mapContainer.children.length === 0) { + return; + } + + let minX, maxX, minY, maxY; + for (let sprite of mapContainer.children) { + let bounds = sprite.getBounds(); + minX = minX !== undefined ? Math.min(minX, bounds.x) : bounds.x; + minY = minY !== undefined ? Math.min(minY, bounds.y) : bounds.y; + maxX = maxX !== undefined ? Math.max(maxX, bounds.x + bounds.width) : bounds.x + bounds.width; + maxY = maxY !== undefined ? Math.max(maxY, bounds.y + bounds.height) : bounds.y + bounds.height; + } + + // 鐭╁舰涓績 + let centerPoint = { + x: (minX + maxX) / 2 * mapContainer.scale.x, + y: (minY + maxY) / 2 * mapContainer.scale.y + }; + + let newScale = Math.min( + app.renderer.width / (maxX - minX) * 0.9, // 90%鐨勫搴� + app.renderer.height / (maxY - minY) * 0.9 // 90%鐨勯珮搴� + ); + + mapContainer.scale.set(newScale); + + // 璁╁湴鍥惧鍣ㄧ殑涓績鐐瑰畾浣嶅埌灞忓箷鐨勪腑蹇� + mapContainer.position.set( + app.renderer.width / 2 - centerPoint.x * newScale, + app.renderer.height / 2 - centerPoint.y * newScale + ); } \ No newline at end of file -- Gitblit v1.9.1