插件基础

在场景中,我们把一些复杂的功能点,封装成了插件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中内置插件
  • 初始化场景之时直接添加插件
  • 初始化并动态注册插件

注:

  1. 上述前两种方式安装插件的方式简洁美观,但是有一些限制:
  • 该种形式并不适用于全部插件,有些插件并没有内置如上的添加方式。
  • 以这种形式注册的插件,获取不到插件实例,使用不了插件抛出的一些内置功能。
  1. 三种安装方式不能同时使用。

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