插件基础
在场景中,我们为了将场景中的一些功能点更方便的展示且助于用户使用,进而将其封装了插件Plugin
。
有些插件更多的是为了完成复杂得场景交互。
我们 SDK 中内置了如下插件:
- 场景测量 MeasurePlugin
- 剖切 SlicePlugin
- 视点标签 ViewPointPlugin
- 视角漫游 RoamPlugin
- 环境设置 EnvironmentPlugin
- 透选 ThoughtSelectPlugin
- 场景预设 SceneSettingPlugin
- 地图切换 BaseGalleryListPlugin
- 视口过滤 VisibilityPlugin
- 构件框选 ObjectSelectPlugin
- 地图滤镜 MapFilterPlugin
- 缓冲分析 BufferPlugin
- 显示模式 RenderModePlugin
- 场景标注 DimensionPlugin
- 路径分析 RoutePlugin
- 属性面板 BasePropertyViewPlugin
- 染色 ColorizerPlugin
- 场景批注 NotePlugin
除此之外,我们还在自定义工具栏 ToolbarWidget
中内置了一些插件,这些内置的插件有些是使用了控件 widget
的功能,有些更是对其的优化。如下:
//ToolbarWidget的参数
{
props: {
// 'toolbar' 为DOM的id
container: 'toolbar'
//所内置的插件
tools: [
{
name: 'home',
label: '主视图'
},
{
name: 'navigation',
label: '动态观察'
},
{
name: 'tree',
label: '构件树'
},
{
name: 'screenShot',
label: '场景出图',
},
{
name: 'fullScreen',
label: '全屏',
},
{
name: 'boxZoomIn',
label: '框选放大',
}
]
}
}
1. 插件初始化
插件本质上与控件 widget
相同,都是一个 js
类,大部分使用时都需要先实例化( ToolbarWidget
中内置的不需要初始化,直接如上述代码使用)。
//以视角漫游插件为例
const roamPlugin = new ubm.RoamPlugin()
注:大部分插件的初始化方式都是上述方式,有个别特殊的插件需要一些必要的参数,特殊插件会在后面一一介绍。
2. 插件管理
通过场景实例的 plugin 属性 scene.plugin
, 可以初始化注册、动态注册插件、卸载插件。
2.1 注册插件
const scene = new ubm.Scene('app', {
...
plugin: {
items: [
//实例化的插件
new ubm.RoamPlugin(),
new ubm.EnvironmentPlugin(),
...
],
},
...
})
注:上述方式注册插件简洁美观,但是有限制就是有些新完成的插件可能并没有内置如上的添加方式,一般都是使用如下添加方式,即动态注册插件。
2.2 动态注册插件
const roamPlugin = new ubm.RoamPlugin()
//调用了scene.plugin的register方法,动态添加roamPlugin
scene.plugin.register(roamPlugin)
注:我们 SDK 现有的插件都是以上述三种方法注册的,
ToolbarWidget
直接注册、 scene.plugin
初始化场景时注册和 scene.plugin.register
动态注册。2.3 卸载插件
//调用了scene.plugin的uninstall方法,卸载roamPlugin
scene.plugin.uninstall(roamPlugin)
3. 部分插件用法介绍
大部分插件的用法就是简单初始化,然后添加到场景中使用即可,但有个别的插件为了满足需求需要一定的参数设置。例如染色插件 ColorizerPlugin
和属性面板 BasePropertyViewPlugin
。
请参看下页介绍。
Table of Contents