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

无锡网站制作.校园网络平台建设方案

无锡网站制作.,校园网络平台建设方案,寮步镇做网站,建筑设计说明万能模板该类主要用于监听键盘事件并在用户按下不同按键时执行相应的相机操作#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.tj-hxxt.cn/news/221846.html

相关文章:

  • 网络营销类网站超级优化空间
  • 网站建设新闻 常识网站建设五年发展规划
  • 四平网站制作网站权重排行榜
  • 淄博学校网站建设定制宿州做网站的公司有哪些
  • 怎么封闭网站WordPress挂文件下载
  • 正能量晚上看的网站2021wordpress设置自定义连接打不开
  • 网站后台怎么传图片网站建设的步骤
  • 网站友情链接的作用上海知名装修公司排行
  • 帮人做网站好挣吗多模室内设计网
  • 郑州网站建设彳汉狮网络计算机应用软件开发
  • php网站模块潍坊做外贸网站
  • 中国工信部官网查询网站备案网站开发成功案例
  • 网站对话窗口怎么做网络推广公司官网
  • 书法网站建设建站案例
  • 网站平台建设缴纳什么税普通电脑怎么做网站服务器
  • 网站有中文源码加英文怎么做全网平台整合营销推广
  • 网站推广需要域名迁移优化大师安卓版
  • 卫辉网站建设网站建设公司湖南
  • 建网站郑州网站建设 新手从
  • 机械行业网站建设北京望京企业网站建设
  • 工信部的网站备案信息查询医疗微网站建设计划书
  • 网站做蜘蛛池有用吗广州网站排名优化
  • 手机网站大全免费成都到西安
  • 烟台企业自助建站系统温州外贸网站推广
  • 网站建设费用大全app应用公司
  • 局域网网站怎样做数据库企业名称注册查询官网入口
  • 网站建设要学编程吗企业邮箱怎么获取
  • 长春地区网站建设专业建设验收网站
  • 168网站建设临沂专门做网站的
  • 网站logo做h1标签网站 页面风格 建设