我导入3D模型以后,取消选中,然后滚动滚轮调整地图层级,当地图视角越来越大时(拉高视角),3D模型的位置移动了,这不应该发生,理论上不管我怎么调整地图层级,地图视角,3D模型的位置都不应该改变。
我们观察到日志中有一个关键突变:
- Zoom 6.05 → 5.77 时:
- 模型(Three世界) ↔ 文字距离:从 8.2px 突然跳变到 51.5px
- 模型(经纬度投影) ↔ 文字距离:从 8.2px 变为 6.6px(基本正常变化)
- 模型Three屏幕坐标:从 (623.0, 143.8) 跳变到 (663.5, 151.0)
- 模型投影屏幕坐标:从 (623.0, 143.8) 变为 (618.4, 148.8)(与文字坐标(612.0,150.4)接近)
这说明在 zoom 约 5.8 附近,Three.js 模型的屏幕投影发生了突变,而模型本身的经纬度投影是正确的。问题不在经纬度,而在 Three.js 场景的模型世界矩阵或相机投影矩阵的同步出现了错误。模型在 Three.js 场景中的世界坐标/相机投影在特定缩放层级发生了突变,而模型本身的经纬度坐标是正确的(因为经纬度投影始终跟随地图正常移动)。因此,问题出在 Three.js 模型与地图投影矩阵的同步逻辑上,而不是模型的地理位置数据。
根据监控日志,问题已确认:
- 从 Zoom 6.01 到 5.88 的过渡中,模型的 Three屏幕坐标 相对于 投影屏幕坐标 发生了 跳变(Y方向偏移约 +13px,X方向偏移约 +6px)。
- Three世界坐标 始终为
(0.82,0.42,0.00),海拔 恒定 45 米,因此模型的地理位置数据没有问题。
我们确认了问题根源:相机投影矩阵在缩放过程中发生突变(不是平滑变化),导致同样世界坐标的模型在屏幕上的投影位置跳变。
意见反馈
