插件基础
在场景中,我们把一些复杂的功能点,封装成了插件Plugin。有时为了完成复杂的场景交互,我们需要结合ToolbarWidget控件来使用。
插件基础
在场景中,我们把一些复杂的功能点,封装成了插件Plugin。有时为了完成复杂的场景交互,我们需要结合ToolbarWidget控件来使用。
我们 SDK 中内置了如下一些插件:
- 染色 ColorizerPlugin
- 属性详情 BasePropertyViewPlugin
- 视点标签 ViewPointPlugin
- 批注 NotePlugin
- 场景预设 SceneSettingPlugin
- 绘制选择 DrawingSelectPlugin
- 几何绘制 DrawingPlugin
- 剖切分析 SlicePlugin
- 地理配准 GeoreferencingPlugin
- 显示模式 RenderModePlugin
- 视口过滤 VisibilityPlugin
- 环境设置 EnvironmentPlugin
- 测量 MeasurePlugin
- 视角漫游 RoamPlugin
- 标注 DimensionPlugin
- 路径分析 RoutePlugin
- 通视分析 LineOfSightPlugin
- 缓冲分析 BufferPlugin
- 地图滤镜 MapFilterPlugin
- 公共底图 PublicBasemapPlugin
- 几何筛选 RegionOperatePlugin
- 要素绘制 FeatureDrawingPlugin
- 楼层导航 FloorGuidePlugin
- 素材资源 SourceMaterialPlugin
1. 属性
1.1 获取场景中的全部插件
使用插件属性plugins来获取场景中的全部插件,代码示例如下:
scene.plugin.plugins
2. 安装插件
在场景中安装插件有以下三种方法:
- 在
ToolbarWidget中内置插件 - 初始化场景之时直接添加插件
- 初始化并动态注册插件
注:
- 上述前两种方式安装插件的方式简洁美观,但是有一些限制:
- 该种形式并不适用于全部插件,有些插件并没有内置如上的添加方式。
- 以这种形式注册的插件,获取不到插件实例,使用不了插件抛出的一些内置功能。
- 三种安装方式不能同时使用。
2.1 在ToolbarWidget中内置插件
场景初始化设置工具栏时,可直接内置插件到工具项中。
const scene = new ubm.Scene('app', {
...
ui:{
toolbar:{
container: 'container',
tools:[
// 视角漫游插件
'roam'
]
}
},
}
详情可参考工具栏控件
2.2 初始化场景之时直接添加插件
在场景初始化的时候,可以使用场景的plugin属性来直接添加插件。
const scene = new ubm.Scene('app', {
...
plugin: {
items: [
//实例化的插件
new ubm.RoamPlugin(),
new ubm.EnvironmentPlugin(),
...
],
},
...
})
2.3 初始化并动态注册插件
先初始化的插件实例roamPlugin,再通过场景实例的 plugin 属性,使用register方法来动态注册添加插件。
//以视角漫游插件为例,得到视角漫游插件实例
const roamPlugin = new ubm.RoamPlugin()
//调用了scene.plugin的register方法,动态添加插件实例
scene.plugin.register(roamPlugin)
3. 获取插件实例
getById(id: string): void
参数id:插件的id。
在场景中获取漫游插件实例,代码示例如下:
const roamPlugin = scene.plugin.getById('roam')
4. 卸载插件
uninstall(param: string): void
参数param:插件实例。
卸载漫游插件roamPlugin,代码示例如下:
//调用了scene.plugin的uninstall方法,卸载插件
scene.plugin.uninstall(roamPlugin)
5. 插件原理
插件的写法我们遵循视图'view'和后台逻辑'model'的开发原则。
5.1 视图
安装插件的时候我们就默认开启了视图,即插件在场景中的界面展示及交互效果。
如果需要关闭视图,代码示例如下:
const roamPlugin = new ubm.RoamPlugin(
// 关闭视图,默认是true
isCreateview: false
// 分组
toolGroup: 0
)
5.2 后台逻辑
插件的功能实现都是在后台逻辑'model'中进行实现的,后续插件的介绍基本上都是从逻辑功能出发介绍的,是没有UI界面的。

BIMFlux AI
