GeoSingleBuildingLayer

单一楼栋图层类

new Cesium.GeoSingleBuildingLayer(options)

Name Type Description
options Object optional 参数选项:
Name Type Default Description
viewer Cesium.Map | Cesium.Viewer optional 三维视图对象
url String optional 3DTileset模型文件路径
maximumScreenSpaceError Number 16 optional 最大屏幕空间误差,值越大,则效率越高,相应的模型显示的越粗糙
maximumMemoryUsage Number 512 optional GPU最大缓存内存,单位MB。如果设置过大或过小都会增加程序崩溃的风险
location Boolean optional 模型加载后是否飞行定位
displayMode DisplayMode DisplayMode.HIDE optional 显示模式。当选中3楼时,3楼以上的显示模式可以是隐藏(HIDE)或偏移(OFFSET),或者设置分层偏移(FLOOROFFSET)
offsetDistance Number optional 如果是显示模式时偏移时,偏移的距离,单位米
offsetOriginal Object optional 模型的原始的偏移量,默认为{ x: 0, y: 0, z: 0, heading: 0, pitch: 0, roll: 0 }
offsetPosition Object optional 模型的原始偏移位置,默认为{ lng: 0, lat: 0 , height: 0 }
selectedHouseCode String optional 当前选中的房屋编码,如果设置该房屋将以selectedColor属性设置的颜色显示
selectedFloorCode String optional 当前选中的楼层编码,如果设置该楼层以上将被隐藏
hoveredHouseCode String optional 当前悬浮的房屋编码
houseCodeField String 'Name' optional 3DTileset模型文件中定义房屋编码对应的字段名
floorCodeField String 'Floor' optional 3DTileset模型文件中定义楼层编码对应的字段名
selectedColor Color optional 选中的模型颜色
hoveredColor Color optional 鼠标悬停对应的模型颜色
bloom Object optional 点击楼层高亮时的辉光效果参数。
Name Type Default Description
enabled Boolean false optional 点击楼层高亮时是否开启辉光效果,默认不开启
strength Number 1 optional 辉光强度,值越大,辉光效果越明显
radius Number 0.1 optional 辉光半径系数,值越大,辉光范围越大
floorOffsets Array [] optional 分层偏移模式下模型的偏移量属性数组,值为[operator, value, x, y, z],operator操作符包括('>', '<', '>=', '<=', '==='),value楼层数,x水平向东偏移值,y水平向南偏移值,z垂直方向偏移值], 格式为[['>=', 3, 10, 10, 10],['===', 2, 5, 5, 6]...],默认为[]
Author:
  • ouyangbo,zj,liuck
Example:
//示例代码
    let url = `/geomap-api/JsCesuimDemo/resource/data/ld/4403060110180500010/tileset.json`;
    var singleBuildingLayer = new Cesium.GeoSingleBuildingLayer({
        url,
        viewer,
        floorCodeField: 'floor',
        houseCodeField: 'Name',
        selectedColor: convertColor(viewModel['房屋选中颜色']),
        hoveredColor: convertColor(viewModel['鼠标悬停颜色'])
    });
    singleBuildingLayer.addTo(viewer);
    // 或者使用下面的方式,添加到效果图层中。
    // viewer.effectLayers.add(singleBuildingLayer);
    //绑定全局的事件监听,仅对效果图层有效
    viewer.on('click',function(e){
        if(e.originalLayer === singleBuildingLayer){
            singleBuildingLayer.selectedHouseCode = e.houseCode;
            singleBuildingLayer.selectedFloorCode = e.floorCode;
            singleBuildingLayer.selectedHouseFeature = e.param.info;
        }
    })
    viewer.on('hover',function(e){
        if(e.originalLayer === singleBuildingLayer){
            singleBuildingLayer.hoveredHouseCode = e.houseCode;
        }
    })
Demo:

Extends

Members

staticCesium.GeoSingleBuildingLayer.DisplayMode

显示模式。当选中3楼时,3楼以上的显示模式可以是隐藏(HIDE)或偏移(OFFSET),或者设置分层偏移(FLOOROFFSET)
Example:
GeoSingleBuildingLayer.DisplayMode.HIDE;
GeoSingleBuildingLayer.DisplayMode.OFFSET;
GeoSingleBuildingLayer.DisplayMode.FLOOROFFSET;
模式设置,当选中3楼时,3楼以上的显示模式可以是隐藏(HIDE)或偏移(OFFSET)或分层偏移(FLOOROFFSET)
Example:
singleBuildingLayer.displayMode = Cesium.GeoSingleBuildingLayer.DisplayMode.OFFSET;
singleBuildingLayer.displayMode = Cesium.GeoSingleBuildingLayer.DisplayMode.HIDE;
singleBuildingLayer.displayMode = Cesium.GeoSingleBuildingLayer.DisplayMode.FLOOROFFSET;

floorCodeField : String

房屋所在楼层编码字段名

floorOffsets : Array

分层偏移时的偏移量数组,值为[operator, value, x, y, z],operator操作符包括('>', '<', '>=', '<=', '==='),value楼层数,x水平向东偏移值,y水平向南偏移值,z垂直方向偏移值], 如['>=', 3, 10, 10, 10]表示楼层数大于等于3的楼层在x、y、z方向偏移10,格式为[['>=', 3, 10, 10, 10],['===', 2, 5, 5, 6]...]
Example:
let url = `/geomap-api/JsCesuimDemo/resource/data/ld/4403060110180500010/tileset.json`;
var singleBuildingLayer = new Cesium.GeoSingleBuildingLayer({
  url,
  viewer,
  floorCodeField: 'floor',
  houseCodeField: 'Name',
  selectedColor: convertColor(viewModel['房屋选中颜色']),
  hoveredColor: convertColor(viewModel['鼠标悬停颜色']),
  displayMode: Cesium.GeoSingleBuildingLayer.DisplayMode.FLOOROFFSET,
  floorOffsets: [['>=', 3, 10, 10, 10],['===', 2, 5, 5, 6], ['===', 1, 0, 0, 4]]
});
//或者添加到效果图层后再赋值
singleBuildingLayer.addTo(viewer);
singleBuildingLayer.floorOffsets = [['>=', 3, 10, 10, 10],['===', 2, 5, 5, 6], ['===', 1, 0, 0, 4]]

houseCodeField : String

房屋编码字段名

hoveredColor : Color

鼠标悬停对应的模型颜色

hoveredHouseCode : String

悬浮的房屋编号

offsetDistance : Number

偏移距离,如果是显示模式时偏移时,偏移的距离,单位米。

selectedColor : Color

选中的模型颜色

selectedFloorCode : String

选中的楼层编号

selectedHouseCode : String

选中的房屋编号

selectedHouseFeature : Cesium3DTileFeature

选中的房屋对象

url : String

3DTileset模型文件路径

Methods

addTo(map)

绑定到三维地图
Name Type Description
map viewer
Inherited From:

animate(options)

调用动画:浮入/浮出动画或模型展开动画
Name Type Description
options Object optional 动画参数
Name Type Default Description
type String 'floating' optional 动画类型,'floating'为浮入/浮出动画,'spreading'为模型展开动画,缺省是为'floating'
duration Number 3 optional 持续时间,单位秒
floatingIn Boolean true optional 浮入还是浮出动画。true为浮入,false为浮出。
bottom Number -828 optional 世界第一高楼迪拜大厦828米,浮入的起始高程默认-828。
direction String 'X' optional 模型展开的方向
offset Number 20 optional 模型展开偏移的距离
floor Number 5 optional 指定展开的楼层数
Example:
//示例代码
1、调用时区分动画类型,设置type
singleBuildingLayer.animate({
   type: options.type,
   duration: 1.5,
   floatingIn: options.isIn? true: false,
   bottom: -60,
   direction: options.direction,
   offset: options.offset,
   floor: options.floor
})
2、调用时不设置type,默认为浮入/浮出动画
singleBuildingLayer.animate({
   duration: 1.5,
   floatingIn: options.isIn,
   bottom: -60,
})

bloomHouse(houseTileFeature)

应用房屋辉光效果
Name Type Description
houseTileFeature Cesium3DTileFeature 选中的房屋对象,可以缺省

clearHighlight()

清除高亮,包含选中和悬浮

destroy()

销毁图层对象
Inherited From:

getData()

获取图层数据
Inherited From:

getDataSource()

获取数据源
Inherited From:
隐藏图层
Returns:

highlightHouse(selectedHouseCode, selectedFloorCode, hoveredHouseCode)

高亮房屋
Name Type Description
selectedHouseCode String | Number 选中的房屋编码,可以缺省
selectedFloorCode String | Number 选中的房屋所在楼层,可以缺省
hoveredHouseCode String | Number 悬浮的房屋编码,可以缺省

pickFeatures(pickedFeatures, windowPosition)Object

拾取图层中的要素
Name Type Description
pickedFeatures Array 场景中被拾取的对象集合,需要在图层自己内部判断识别出属于自己的,并挂接上图层的属性信息
windowPosition Cartesian2 画布的二维坐标
Returns:
返回固定形态的结构数据
Example:
//返回结构参考样例
{
			houseCode: fwCode,
			floorCode: floor,
			eventType: ScreenSpaceEventType.LEFT_CLICK,
			originalLayer: GeoSingleBuildingLayer
			param:{
				info: pickedFeature,
				pickedInfos: pickedFeatureList
			}
		}

remove()

移除3dtiles

removeDataSource()

移除数据源
Inherited From:

render()

渲染图层

resetBuilding()

偏移后的建筑还原

setData(data)

data改变重新渲染3dtiles
Name Type Description
data Object optional 数据:
Name Type Description
url String optional 模型数据的tileset.json路径
selectedHouseCode String | Number optional 选中的房屋编号
selectedFloorCode String | Number optional 选择的楼层编号
hoveredHouseCode String | Number optional 悬浮的房屋编码

setDataSource(dataSource)

设置数据源
Name Type Description
dataSource GeoDataSource
Inherited From:
显示图层
Returns:

spreadHouse(spreadDirection, spreadNum, currentFloor)

应用建筑展开
Name Type Description
spreadDirection String 模型展开的方向,默认为'x'
spreadNum Number 模型展开的偏移量,默认为10
currentFloor Number 当前需要偏移的楼层数,缺省时整个建筑展开