模型基础
在场景构建中,可以组织不同类型的场景对象。
1. 管理
通过场景实例的属性 scene.layer
, 可以添加或删除不同的模型。
1.1 添加
scene.layer.add(layer)
1.2 移除
scene.layer.remove(layer)
2. 类型
根据不同的场景对象,在 SDK 有如下几种常用的类型:
- BIM模型 BuildingLayer
- 实景模型 RealityLayer
- 点云模型 PointCloudLayer
- 人工模型 SceneLayer
- GLTF小模型 CoverLayer
- 外部模型 ExternalLayer
3. 使用
对于的具体使用方式请看下面的代码示例:
const scene = new ubm.Scene('app', {...})
// 在此以建筑为例
const layer = new ubm.BuildingLayer({
id: 'demo',
title: '高层住宅',
url: 'http://119.96.108.174:6109/高层住宅/SceneServer',
})
scene.layer.add(layer)
注:因为各个建筑模型都是有自己的位置的,所以在使用地球场景
viewingMode: 'global'
时,需要用 scene.goTo()
将相机跟踪到建筑模型的视角。其示例代码如下( goTo()
的具体使用方式请参看场景控制):
scene
.when(() => {
layer.when(() => {
scene.goTo({fullExtent:layer.fullExtent,tilt: 60 },{
speedFactor: 2,
})
})
})
.catch((e) => {
throw e
})
其中 scene.when()
和 layer.when()
函数的作用分别为"场景加载完后"和"加载完后",即场景和加载完后进行相机飞行。
注:对于以上使用方法,只是较常用的方法,还有其他使用方法。即直接在
scene
的第二个配置对象中直接配置默认视角 camera
,如要具体了解请参看场景控制。4. 事件
对于 BuildingLayer
建筑和 PointCloudLayer
点云我们 SDK 提供了两个事件,分别为:
4.1 点击事件
点击事件 onPick
就是点击中某个构件时,产生的回调函数,其使用方式如下:
// 在此以建筑为例
const layer = new ubm.BuildingLayer({
...
onPick: (result) => {
...
}
})
scene.layer.add(layer)
4.2 指向事件
指向事件 onPointer
就是指向中某个构件时,产生的回调函数,其使用方式如下:
// 在此以建筑为例
const layer = new ubm.BuildingLayer({
...
onPointer: (result) => {
...
}
})
scene.layer.add(layer)
4.3 返回值
上述两种事件都会返回一个回调返回值 result
,此回调返回值的数据结构如下(在此以点击事件的回调返回值为例):
interface PickInfo {
// 构件基本属性信息
attributes: PickAttributes
// 构件位置信息
position: PickPosition
}
interface PickAttributes {
// 构件标高
of_level: string
// 构件分类
of_category: string
// 构件族类
of_family: string
// 构件id
id: number,
// 合模前单模型的名称。可用于在合模后,区分模型建筑
DocName: string
}
interface PickPosition {
// 屏幕x
screenX: number
// 屏幕y
screenY: number
// 投影坐标x
x: number
// 投影坐标y
y: number
// 投影坐标z
z: number
// 纬度
latitude: number
// 经度
longitude: number
// 参考坐标系
spatialReference: number
}
指向事件与点击事件的返回值略有不同,但所代表的构件信息完全相同。如下:
指向事件回调构件属性 | 点击事件回调构件属性 | 模型构件属性 |
---|---|---|
of_level | of_level | of_level |
of_category | of_category | of_category |
of_family | of_family | of_family |
id | id | id |
docName | DocName | DocName |
事件可以和弹窗 popup
一起使用,通过事件返回值给弹窗 popup
提供参数,从而实现构件提示窗的效果。
注:
popup
相关设置请参看基础控件下的弹窗一栏。事件可以方便用户查看模型的构件信息,进而更好的对模型构架进行某些特殊处理,例如对模型进行染色,其中的构件筛选就可以通过事件知晓构件信息,进而赋值筛选。