vue3中THINGJS初始化步骤

前提:npm i @ti-cli/thing-repo

1.在main.ts中设置初始化:

javascript 复制代码
import { Core, ScreenAdapter } from '@ti-cli/thing-repo'; 
   // 初始化core实例
const initCore = () => {
  window.coreIns = new Core({
    host:项目底座的地址,
    tenantCode: "master",
    tokenCode: 'TEST_TOKEN',
    depends: ['thingjs','uearth', 'thing.campus'], // 依赖-参数固定-thingjs uearth thing.campus EffectThemeControl
    hasLogin: false, // 是否需要登录 默认false 免登录  true 需要登录
    initCb: () => {
      window.configXxv = window.coreIns.Config.configXxv;
      // 核心初始化完毕
      initVue();
    },
  });
};
initCore()

2.在libs中添加wasm

3.在types文件夹中添加一个window.d.ts

javascript 复制代码
declare interface Window {
  app: any;
  config: any;
  campusManagerIns:any;
  effectManagerIns:any;
  campusPlacementIns: any;
  createPointTwinIns: any;
  THREE: any;
  mapManagerIns: any;
  createLineTwinIns: any;
  createRegionTwinIns: any;
  campusTwinsManagerIns: any;
  campusMapManagerIns:any;
  THING: any;
  coreIns: any;
  [key: string]: any;
}

declare module '*';
declare module 'uuid';

4.在想要引用的页面中设置一个容器:

TypeScript 复制代码
<template>
  <div class="scene">
    <div id="div3d"></div>
</template>

5.在对应页面中:

TypeScript 复制代码
<script lang="ts" setup>
import { onMounted, onUnmounted, ref ,watch } from 'vue';
import { createContainer, CampusManager, EffectManager,CampusTwinsManager ,MapManager} from '@ti-cli/thing-repo';
// 1.初始化三维容器
const initScene = async () => {
  window.app = await createContainer({
    container: 'div3d',
    background: '#000000',
    wasmRootPath: './libs/wasm',
    core: window.coreIns,
  });
  // 2.加载三维场景
  loadCampus();
};
const buildingdata = ref()
// 加载场景
const loadCampus = () => {
  window.mapManagerIns = new MapManager({
   app: window.app, // THINGJS实例
   
  tileLayerUrl:地图瓦片,
 mapLoaded: ()=>{
     window.campusManagerIns = new CampusManager({
    app: window.app, // THINGJS实例
    core: window.coreIns, // 核心实例
    sceneCode: 获取到的万能token,
    flyToSetting: true, // 园区,建筑,楼层默认飞到设置视角 - 默认true
    initChildScene: false, // 加载主场景时是否加载子场景 默认false
    position:[0,0,0],
    lon:104.11449,//如果是放在地图上,就需要设置经纬度
   lat:30.64768
   ,
   height:-10,
   angle:180,
    loadProgress: (val: number) => {
      // 加载进度,可用于加载进度条
      // console.log('加载进度', val);
    },
    childSceneBeginLoad: () => {
      console.log('子场景开始加载');
    },
    childSceneLoaded: () => {
      console.log('子场景加载完毕');
    },
    sceneLoaded: async (campus: any) => {
      console.log('主场景加载完毕', window.campusManagerIns.curCampus);
    window.app.camera.enableMapControl = false
          // 层级切换
      changelevel(campus)
      
      // 效果包
      const effectOption = {
        app: window.app,
        core: window.coreIns,
        name: window.campusManagerIns.curCampusData.name,
        campus: window.campusManagerIns.curCampus,
        campusData: window.campusManagerIns.curCampusData,
        cb: (e: any) => {
          console.log('加载完毕', e);
        },
      }
      window.effectManagerIns = new EffectManager(effectOption)
    },
  });
  }
})
};
// 场景切换
const changelevel = (campus:any) => {
      window.app.level.change(campus);
}

6.如果想要再对默认的三维页面进行操作,那么就需要再主场景加载完毕的里面进行操作

相关推荐
q***25211 小时前
SpringMVC 请求参数接收
前端·javascript·算法
q***33371 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
烛阴2 小时前
从`new()`到`.DoSomething()`:一篇讲透C#方法与构造函数的终极指南
前端·c#
还债大湿兄2 小时前
阿里通义千问调用图像大模型生成轮动漫风格 python调用
开发语言·前端·python
谢尔登2 小时前
defineProperty如何弥补数组响应式不足的缺陷
前端·javascript·vue.js
蓝瑟忧伤2 小时前
前端技术新十年:从工程体系到智能化开发的全景演进
前端
Baklib梅梅3 小时前
员工手册:保障运营一致性与提升组织效率的核心载体
前端·ruby on rails·前端框架·ruby
涔溪3 小时前
实现将 Vue2 子应用通过无界(Wujie)微前端框架接入到 Vue3 主应用中(即 Vue3 主应用集成 Vue2 子应用)
vue.js·微前端·wujie
IT_陈寒3 小时前
Redis性能翻倍的5个冷门技巧,90%开发者都不知道第3个!
前端·人工智能·后端