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.如果想要再对默认的三维页面进行操作,那么就需要再主场景加载完毕的里面进行操作

相关推荐
IT_陈寒22 分钟前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰1 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
山河木马1 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林8181 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
妙码生花2 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
Awu12273 小时前
⚡从零开发 Agent CLI(五)实现一个可治理、可扩展的工具系统
前端·人工智能·claude
咪库咪库咪3 小时前
Vue3-生命周期
前端
莪_幻尘3 小时前
你的 AI Skill 越多越蠢?Token 上下文爆炸的求生指南
前端·ai编程
lichenyang4534 小时前
从 has.echo 到异步 API 注册表:一次 ASCF API 回调不触发的排查复盘
前端
林瞅瞅4 小时前
Nuxt3 项目部署 Nginx 防盗链后特定 JS 文件 403 问题修复方案
前端