求助:为何简单的Deck.GL OrbitView无法响应鼠标交互?
Deck.GL 鼠标事件无响应问题修复
你的代码存在两个核心配置错误,导致视图无法响应鼠标交互:
initialViewState和controller是Deck 实例的全局配置项,你错误地将它们放到了SimpleMeshLayer的参数中,图层并不负责视图控制逻辑。- 创建
OrbitView时未传入初始视图状态,导致控制器无法识别初始视角参数。
修正后的代码
const {Deck, OrbitView, SimpleMeshLayer, COORDINATE_SYSTEM} = deck; const {CubeGeometry} = luma; const viewState = { target: [0, 0, 0], zoom: 0, rotationOrbit: 145, rotationX: 65, minRotationX: -90, maxRotationX: 90, minZoom: -10, maxZoom: 10 } const deck = new Deck({ views: new OrbitView({ orbitAxis: "Y" }), // 全局配置初始视图状态 initialViewState: viewState, // 全局开启交互控制器 controller: true, layers: [ new SimpleMeshLayer({ data: [ { position: [-25, 0, 0], color: [255, 0, 0] }, { position: [25, 0, 0], color: [0, 255, 0] } ], coordinateSystem: COORDINATE_SYSTEM.CARTESIAN, mesh: new CubeGeometry(), getPosition: d => d.position, getColor: d => d.color, getScale: [20, 20, 20] }) ] });
关键说明
调整后,OrbitView 控制器会正常监听鼠标事件,实现视角旋转、缩放等交互。核心逻辑是区分 Deck 实例与图层的职责边界:视图控制属于全局配置,图层仅负责数据渲染。
内容的提问来源于stack exchange,提问作者Bogdan Stăncescu
相关产品推荐
相关产品推荐

