当前位置: 首页 > news >正文

开网站制作公司广东汕头网络科技有限公司

开网站制作公司,广东汕头网络科技有限公司,wordpress切换语言实现,页面模板怎么编辑该类主要用于监听键盘事件并在用户按下不同按键时执行相应的相机操作#xff0c;如改变相机的位置、偏航角、俯仰角和翻滚角#xff0c;从而实现在三维场景中的漫游。 以下是代码的主要逻辑#xff1a; 导入Cesium库#xff0c;并定义一个flags对象#xff0c;其中包含了…       该类主要用于监听键盘事件并在用户按下不同按键时执行相应的相机操作如改变相机的位置、偏航角、俯仰角和翻滚角从而实现在三维场景中的漫游。 以下是代码的主要逻辑 导入Cesium库并定义一个flags对象其中包含了所有可能触发的键盘漫游状态标志。 keyboardRoam 类包含以下方法 start(viewer, setStep): 初始化键盘监听事件包括keydown和keyup事件并在每一帧clock onTick事件中执行funcTick函数以更新相机状态。同时禁用默认的鼠标移动地图和平移相机的功能。 hprSetting(h, p, r): 设置相机的Heading、Pitch、Roll即偏航角、俯仰角、翻滚角。 getFlagFromKeyboard(k): 根据按下的键盘按键返回对应的按键名称。 在funcTick函数中根据flags对象中的状态标志来更新相机的位置和姿态。 quit()方法用于销毁键盘监听事件以及恢复鼠标移动地图和平移相机的功能。 通过实例化 keyboardRoam 类并调用 start 方法可以启用键盘漫游功能调用 quit 方法则停止漫游并恢复默认的相机控制方式。 // 引入键盘漫游方法import keyboardRoam from ../utils/roam/keyboardRoam;// 键盘控制相机方法初始化keyboard new keyboardRoam();// 键盘控制相机方法开始keyboard.start(window.viewer, 1)// 键盘控制相机方法结束keyboard.quit(); import * as Cesium from cesium; // 定义事件组 let flags {// 相机位置moveForward: false,moveBackward: false,moveLeft: false,moveRight: false,moveUp: false,moveDown: false,translateFront: false,translateBehind: false,// 相机姿态picthUp: false,picthDown: false,rollLeft: false,rollRight: false,headingLeft: false,headingRight: false, }; let cameraHeight; let heading; let pitch; let roll; let funcTick; /*** 键盘漫游*/ class keyboardRoam {/*** 键盘漫游加载方法* param: 使用键盘控制地图漫游,* param {Cesium.Viewer} viewer -cesium地图容器* param {Number} setStep -相机视角移动步长*/start(viewer, setStep) {let that this;// 添加键盘监听事件document.addEventListener(keydown,(this.down function (e) {let flagName that.getFlagFromKeyboard(e);if (typeof flagName ! undefined) {flags[flagName] true;}}),false);// 相机将保持锁定在当前位置。此标志仅适用于2D和Columbus视图模式。viewer.scene.screenSpaceCameraController.enableTranslate false;// 相机将锁定到当前标题。这个标志只适用于3D和哥伦布视图。viewer.scene.screenSpaceCameraController.enableTilt false;document.addEventListener(keyup,(this.up function (e) {let flagName that.getFlagFromKeyboard(e);if (typeof flagName ! undefined) {flags[flagName] false;}}),false);console.log(funcTick, 0000);// 为每一帧添加监听事件let m viewer.clock.onTick.addEventListener( // 键盘按下事件funcTick () {let camera viewer.camera;let ellipsoid viewer.scene.globe.ellipsoid;cameraHeight ellipsoid.cartesianToCartographic(camera.position).height;// 根据相机高度设置移动距离let moveRate (cameraHeight / 150.0) * setStep;heading viewer.camera.heading;pitch viewer.camera.pitch;roll viewer.camera.roll;// 根据事件调整相机// 相机的偏航角、翻滚角和俯仰角// 偏航角if (flags.headingLeft) {that.hprSetting(-0.005 * setStep, 0, 0);}if (flags.headingRight) {that.hprSetting(0.005 * setStep, 0, 0);}// 俯仰角if (flags.picthUp) {that.hprSetting(0, 0.01 * setStep, 0);}if (flags.picthDown) {that.hprSetting(0, -0.01 * setStep, 0);}// 翻滚角if (flags.rollLeft) {that.hprSetting(0, 0, 0.01 * setStep);}if (flags.rollRight) {that.hprSetting(0, 0, -0.01 * setStep);}// 向中心点靠近if (flags.moveForward) {camera.moveForward(moveRate);}// 从中心点远离if (flags.moveBackward) {camera.moveBackward(moveRate);}// 相机本身前后左右上下平移if (flags.moveUp) {camera.moveUp(moveRate);}if (flags.moveDown) {camera.moveDown(moveRate);}if (flags.moveLeft) {camera.moveLeft(moveRate);}if (flags.moveRight) {camera.moveRight(moveRate);}// 相机向前平移if (flags.translateFront) {camera.rotateDown(Math.PI / 3600000 * setStep)}// 相机向后平移if (flags.translateBehind) {camera.rotateUp(Math.PI / 3600000 * setStep)}});return m;}// 相机翻滚角设置方法hprSetting(h, p, r) {viewer.camera.setView({orientation: {heading: heading h,pitch: pitch p,roll: roll r,},});}// 监听键盘按下和松开的状态getFlagFromKeyboard(k) {switch (k.key) {// 按字符的Unicode编码// 相机姿态case ArrowUp:return picthUp;case ArrowDown:return picthDown;case ArrowLeft:return headingLeft;case ArrowRight:return headingRight;case j:return rollRight;case l:return rollLeft;// 相机向屏幕中心点前进后退case i:return moveForward;case k:return moveBackward;// 相机前后左右上下平移case w:return translateFront;case s:return translateBehind;case a:return moveLeft;case d:return moveRight;case q:return moveUp;case e:return moveDown;default:return undefined;}}/*** 销毁键盘漫游事件*/quit() {document.removeEventListener(keydown, this.down, false);document.removeEventListener(keyup, this.up, false);viewer.clock.onTick.removeEventListener(funcTick);// 解除禁用鼠标移动地图事件viewer.scene.screenSpaceCameraController.enableTranslate true;// 解除视图锁定事件。viewer.scene.screenSpaceCameraController.enableTilt true;} } export default keyboardRoam;
http://www.hkea.cn/news/14259226/

相关文章:

  • 广西网站建设策划网站建设质量体系审核指导
  • 爱站网查询东莞网站建设报价 一呼百应
  • 网站内链 外链做网站运营有前景么
  • 贵州城乡住房和建设厅网站响应式网站的意义
  • 收费的网站怎么做的做微信扫码网站
  • 目前市面上做网站的程序微信公众账号登录官网
  • 360 的网站链接怎么做网络基础培训
  • 怎么把做的页面放到网站上唐山手机网站建设
  • 哪个网站可做密丸男科医院网站建设公司
  • 在线做h5 的网站wordpress插件破解下载
  • 简单的手机网站模板下载安装怎么做网页excel
  • 网站的建设书籍安阳做网站的费用
  • 珠宝网站策划书趣夜传媒
  • 铆钉机 东莞网站建设想做分销商有什么平台
  • 商城网站建设特点有哪些郑州哪家做网站便宜
  • 比较好的外贸网站wordpress管理微信公众号
  • 网站背景怎么换微信登录网页版登录入口
  • 网站模板怎么做北京网站搭建报价
  • 深圳建站公司告诉你十个建站步骤贵阳seo推广
  • 福建省龙岩市新罗区建设局网站南戴河区网站建设哪家好
  • 怎么说服企业做网站建立的短语
  • 有没有专门做ppt的网站吗织梦论坛
  • 手机app制作网站企业建设网站方案
  • 汕头建站外贸门户网站
  • 网站自动采集指标中建西部建设北方有限公司网站
  • 北京南站在哪个街道互联网运营管理
  • 同仁行业网站建设报价自己做的网站地址手机怎么打不开
  • 交易网站建设需要学什么长春免费网站建站模板
  • 营销型网站规划建设的七大要素杭州哪家公司可以做网站
  • 企业网站推广哪些效果比较好顺义做网站同学