分享
查看: 69|回复: 0

[分享] 动态加载地图和园区,实现从地图到园区,园区退出到地图

[复制链接]

动态加载地图和园区,实现从地图到园区,园区退出到地图

发表于 2024-6-21 15:06:13 来自 分享 阅读模式 倒序浏览
本帖最后由 yamazaki1201 于 2024-6-21 15:21 编辑



项目预览地址:https://www.thingjs.com/s/4214a1eb7238fe9b5396bc40

  1. var app = new THING.App(); //创建3D场景对象
  2. var map //定义地图场景对象
  3. THING.Utils.dynamicLoad(['https://www.thingjs.com/uearth/uearth.min.js'], function () {
  4.     map = app.create({
  5.         type: 'Map',
  6.         url: 'https://city.thingjs.com/ra/file/fetch/df/file/0AD4BC0DB2868ACD7CCA47F0BA0CC11B37C20DEFA71F26D79AA43D91A05F6F8A51F70274C3E492E636B1923AB5B9A2A400BAE4DABC78169DC76FBA0D7D5573B68D07C6C209711261/map.json',
  7.         complete: function (event) {
  8.             // 地图场景加载完成之后,立刻创建园区
  9.             createCampus()
  10.             // 创建按钮
  11.             new THING.widget.Button('进入园区', function () {
  12.                 map.visible = false //隐藏地图场景

  13.                 // 是否需要更换鼠标旋转平移功能 下面二选一
  14.                 // app.camera.mode = 'normal';  //设置园区场景的键盘操作:鼠标左键旋转场景,右键拖动场景
  15.                 app.camera.options = { moveKey: 'right', rotationKey: 'left' }

  16.                 // 飞到对应园区视角。也可以使用flyTo 替换,主要是切换到合适视角
  17.                 app.camera.fit(app.query('.Campus')[0])

  18.             });
  19.             new THING.widget.Button('退出到地图', function () {
  20.                 map.visible = true //显示地图场景
  21.                
  22.                 // 是否需要更换鼠标旋转平移功能 下面二选一
  23.                 // app.camera.mode = 'earth'; ////设置地图场景的键盘操作:鼠标左键拖动场景,右键右键旋转场景
  24.                 app.camera.options = { moveKey: 'left', rotationKey: 'right' }

  25.                 // 飞到对应园区视角。也可以使用flyTo 替换,主要是切换到合适视角
  26.                 app.camera.fit(app.query('.Campus')[0])
  27.             });

  28.         }
  29.     })
  30. });

  31. function createCampus() {
  32.     // 园区的经纬度坐标(GCJ_02坐标系)
  33.     var sceneLonlat = [116.36854237952045, 39.90210055701153];
  34.     // 将园区的经纬度坐标转为三维坐标,第二个参数代表离地高度
  35.     var position = CMAP.Util.convertLonlatToWorld(sceneLonlat, 0.5)
  36.     // 计算园区在地球上的旋转角度,第二个参数可以调整,对园区在地球表面进行旋转
  37.     var angles = CMAP.Util.getAnglesFromLonlat(sceneLonlat, 180);

  38.     // 创建Campus
  39.     var campus = app.create({
  40.         type: 'Campus',
  41.         name: '工厂',
  42.         url: 'https://www.thingjs.com/static/models/storehouse', // 园区地址
  43.         position: position, // 位置
  44.         angles: angles, // 旋转
  45.         complete: function () { // 创建成功以后执行函数
  46.             // 启动层级控制
  47.             app.level.change(campus);
  48.         }
  49.     });
  50. }
复制代码




avatar
游客~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

130700ppkpl8x3t7tt1b1t