插件基础

在场景中,我们为了将场景中的一些功能点更方便的展示且助于用户使用,进而将其封装了插件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

请参看下页介绍。