addPicture.md 2.5 KB

添加二次绘制的数据

根据业务我们常常会在平面图上做一些二次的绘制以满足业务需求
所以业务一般是这样的

  1. 接口请求平面底图(具体看“快速上手”);
  2. 接口请求二次绘制的区域类图和点

绘制示例

(为保持文档文档,底图将不走接口,用本地数据、若涉及到底图相关,请移步“快速上手”) 注,本次直接引入设备与空间数据模拟接口请求返回

数据格式

::: details 空间接口返回参数(必要返回参数) <<< @/docs/.vuepress/components/tDInsert/data/spacelist.js :::

::: details 设备接口返回参数(必要返回参数) <<< @/docs/.vuepress/components/tDInsert/data/equipmentList.js :::

::: tip 更多数据格式相关看 “数据格式” 模块! :::

示例代码

::: details 示例代码 <<< @/docs/.vuepress/components/tDInsert/addPicture.vue :::

源码

::: details MarkItem源码 <<< @/docs/.vuepress/components/tDInsert/addPictrueClass/MarkItem.ts ::: ::: details FloorView源码 <<< @/docs/.vuepress/components/tDInsert/addPictrueClass/FloorView.ts :::

源码解析

::: details 源码解析

  1. 绘制平面图 移步 “快速上手”
  2. 绘制空间 ```js // 引入空间解析器 import {SZoneParser } from "@persagy-web/big/lib";

// 解析业务空间

mapSpace(val) {
  if (!this.scene) return;
  const parse = new SZoneParser();
//   将空间数据传入 parseData 方法中
  parse.parseData(val);
  parse.zoneList.forEach((item) => {
    // 添加到场景
    this.scene.addItem(item);
  });
},
3. 绘制坐标类(引擎包中未提供解析器)

```js
// 引入 mark 坐标
import { MarkItem } from "./addPictrueClass/MarkItem";
    // 将设备数组传入该方法
    mapEquipment(val) {
      val.forEach((item) => {
        if (item.bimLocation) {
            // 解析坐标
          const arr = item.bimLocation.split(",");
           //   mark存入必要参数
           //  其他数据也可以绑入,item.data中存储,方便交互
          const mark = {
            Id: item.equipId,
            ElementType: "Mark",
            equipId: item.equipId,
            Name: item.equipName,
            x: Number(arr[0]),
            y: Number(arr[1]),
            width: item.width,
            height: item.height,
            url:require('./../../public/assets/img/mark.png')
          };
          this.scene.addItem(new MarkItem(null,mark));
        }
      });
    },

:::