控件基础
在场景中,通过控件Widget
来实现不同形式的场景交互。
我们 SDK 内置了如下基础控件:
- 导航罗盘 CompassWidget
- 导航Cube CubeViewWidget
- 操作引导 GuideWidget
- 缩放 ZoomWidget
- 图层列表 LayerListWidget
- 坐标显示 CoordinateWidget
- 距离测量 DirectLineMeasurement3DWidget
- 剖切 SliceWidget
- 场景地图 BasemapGalleryWidget
- 框选放大 BoxZoomInWidget
- 滚轮特效 MouseScrollingEffectWidget
- 鼠标提示窗 MousePromptWidget
- 底部状态栏 StatusBarWidget
- 时间面板 ClockPanelWidget
- 日照分析 IlluminationWidget
- 主题切换 ThemeWidget
- 通视分析 LineOfSightWidget
- 构件树 BuildingTreeWidget
- 自定义工具栏 ToolbarWidget
- 右键菜单 ContextMenu
- 弹窗 popup
注:除此之外,我们也在开发新的控件,实时更新控件。
1. 控件初始化
控件本质上是一个 js
类,大部分使用时直接实例化即可。
控件初始化和场景scene
息息相关,所以分两种情况:
1.1 场景初始化时添加
new ubm.Scene('app', {
...
ui:{
widgets:[
{
//id 唯一标识符
id:'home',
// name 控件名称
name: 'HomeWidget',
//position 控件位置信息 top-right | top-left | bottom-right | bottom-left | manual
position: 'top-right',
}
]
}
...
})
注:
position
属性中的 manual
,是有些控件是有自己内置的固定位置,不需要自己设置位置,可以不设置 position
属性,也可以将其设置为 manual
。1.2 场景初始化之后
1.2.1 实例化控件
如初始化导航器控件:
// 传入的参数 scene 为当前的场景初始化之后的实例。
const instanceWidget = new ubm.CubeViewWidget(scene)
注:控件在实例化的时候,一些控件是需要传递必要的参数的,具体的控件需要具体分析。
1.2.2 添加控件
scene.when(() => {
//添加导航Cube
scene.ui.add(instanceWidget, 'top-right')
})
2. 控件管理
通过场景实例的 UI 属性 scene.ui
来动态添加add()
或移除remove()
控件。
2.1 动态添加控件
//第二个参数为位置参数,表示所添加控件在场景页的位置。
scene.ui.add(instanceWidget, "top-left")
2.2 动态移除控件
scene.ui.remove(instanceWidget)
注:在使用动态添加
add()
或移除remove()
控件的时候,要在 scene.when()
函数的回调中使用,意为待 scene
场景实例加载完成后才添加控件。3. 部分控件特殊用法
由于每个控件功能不同,所以为满足控件的功能需求部分控件采用了特殊的用法。例如:右键菜单 ContextMenu
、弹窗 popup
等等。
详细请参看下页介绍。