## 添加二次绘制的数据
根据业务我们常常会在平面图上做一些二次的绘制以满足业务需求
所以业务一般是这样的
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));
}
});
},
```
:::