/* 引入Cesium */ // import * as Cesium from 'Cesium'; /** * 分屏 */ class ViewerSplitScreen { /** * 默认初始化 */ constructor() {} } /** * 通用对外公开函数 */ Object.assign(ViewerSplitScreen.prototype, /** @lends ViewerSplitScreen.prototype */ { /** * 开启分屏 * @param {Object} viewer1 视窗1 * @param {Object} viewer2 视窗2 */ initHandler(viewer1, viewer2) { var _self = this; if (_self.handler1 && _self.handler1.getInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)) { return; } _self.handler1 = new Cesium.ScreenSpaceEventHandler(viewer1.scene.canvas); _self.handler2 = new Cesium.ScreenSpaceEventHandler(viewer2.scene.canvas); _self.handler1.setInputAction(function(movement) { var _camerca = viewer1.camera; viewer2.camera.setView({ destination: _camerca.position, orientation: { direction: _camerca._direction, up: _camerca.up, heading: _camerca.heading, pitch: _camerca.pitch, roll: _camerca.roll } }); }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); _self.handler1.setInputAction(function(movement) { var _camerca = viewer1.camera; viewer2.camera.setView({ destination: _camerca.position, orientation: { direction: _camerca._direction, up: _camerca.up, heading: _camerca.heading, pitch: _camerca.pitch, roll: _camerca.roll } }); }, Cesium.ScreenSpaceEventType.WHEEL); _self.handler2.setInputAction(function(movement) { var _camerca = viewer2.camera; viewer1.camera.setView({ destination: _camerca.position, orientation: { direction: _camerca._direction, up: _camerca.up, heading: _camerca.heading, pitch: _camerca.pitch, roll: _camerca.roll } }); }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); _self.handler2.setInputAction(function(movement) { var _camerca = viewer2.camera; viewer1.camera.setView({ destination: _camerca.position, orientation: { direction: _camerca._direction, up: _camerca.up, heading: _camerca.heading, pitch: _camerca.pitch, roll: _camerca.roll } }); }, Cesium.ScreenSpaceEventType.WHEEL); }, /** * 移除分屏效果 */ clearHandler() { var _self = this; if (_self.handler1) { _self.handler1.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE); _self.handler1.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL); } if (_self.handler2) { _self.handler2.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE); _self.handler2.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL); } } }); export default ViewerSplitScreen;