1. MultiRegionsClipping
1.1. 初始化 new MultiRegionsClipping(geomap, options)
多区域裁切类,支持多个简单多边形区域的地形和模型(目前仅支持B3DM类型和PNTS类型)剖切。地形裁切时支持设置被裁切区域的深度、支持底部和侧面纹理的设置。 可以用来替换GlobalClipping类,GlobalClipping类存在凹多边形裁切不完整和拉近视角时切面抖动等问题。 注意事项: - 1.简单多边形是指不包含交叉和内部空洞的凹多边形或凸多边形; - 2.该类使用的是globe对象(地形和影像)和tileset对象(3DTiles模型)的多个区域裁切属性,会与用到globe和tileset的单个区域裁切属性clippingPlanes的相关功能(包括但不限于PlaneClipTool、GlobalClipping和ClipTools等类)在同时使用时产生冲突(优先使用多个区域裁切属性,从而出现其他功能暂时无效的情况)。
Param | Type | Default | Description |
---|---|---|---|
geomap | GeoMap |
GeoMap的实例对象 |
|
[options] | Object |
包含以下参数的Object对象: |
|
[options.globeClipEnabled] | String |
true |
是否开启地形裁切 |
[options.modelClipEnabled] | Number |
true |
是否开启模型裁切 |
[options.clipModels] | Array.<Cesium3DTileset> |
[] |
参与裁切的模型列表 |
Example
var multiClipping = new BOSGeo.MultiRegionsClipping(geomap, {
globeClipEnabled: true
});
1.2. 属性
属性名 | Type | Default | ReadOnly | Description |
---|---|---|---|---|
globeClipEnabled | Boolean |
true |
false | 是否开启地形裁切 |
modelClipEnabled | Boolean |
true |
false | 是否开启模型裁切 |
clipModels | Array.<Cesium3DTileset> |
[] |
false | 是否开启模型裁切 |
1.3. 方法
1.3.1. multiRegionsClipping.addClippingModel(model) ⇒ Boolean
添加裁切模型
Returns: Boolean
-
是否添加成功
Param | Type | Description |
---|---|---|
model | Cesium3DTileset |
新增的裁切模型对象 |
1.3.2. multiRegionsClipping.removeClippingModel(modelId) ⇒ Boolean
将指定id的模型的从裁切模型集合中移除
Returns: Boolean
-
true表示移除成功,false表示当前modelId移除失败或者原本就不存在于待裁切的模型列表中
Param | Type | Description |
---|---|---|
modelId | String |
模型添加时的唯一id |
1.3.3. multiRegionsClipping.addClippingRegion(options) ⇒ Promise.<String>
添加裁切区域
Returns: Promise.<String>
-
promise中返回string或者undefined,当前裁切区域的id,若为undefined则表示添加的区域不符合规范
Param | Type | Default | Description |
---|---|---|---|
options | Object |
开挖参数信息 |
|
options.positions | Array.<Cartesian3> |
裁切区域顶点笛卡尔坐标集 |
|
[options.depth] | Number |
10 |
开挖相对(对应绘制顶点地形最小)深度,值必须大于零 |
[options.sideImage] | String |
Default_Side_Path |
开挖侧面贴图地址 |
[options.bottomImage] | String |
Default_Bottom_Path |
开挖底面贴图地址 |
[options.sample] | String |
1 |
地形高度采样间隔,单位为米,值必须大于零 |
Example
var regionId;
var positions = []; // 非重复位置的顶点个数必须大于三
multiClipping.addClippingRegion({
positions,
}).then((id) => {
regionId = id;
});
1.3.4. multiRegionsClipping.modifyClippingRegion(regionId, options) ⇒ Boolean
修改裁切区域(目前仅支持地形的开挖深度、侧面贴图和底部贴图的修改)
Returns: Boolean
-
true表示修改成功,false表示当前regionId不存在或者没有需要更新的信息
Param | Type | Default | Description |
---|---|---|---|
regionId | String |
要修改的裁切区域id(添加时返回的) |
|
options | Object |
修改的裁切区域信息 |
|
[options.depth] | Number |
10 |
裁切区域开挖深度,深度为相对于开挖顶点中高程最低点而言的,值必须大于零 |
[options.bottomImage] | String |
裁切区域底部贴图地址 |
|
[options.sideImage] | String |
裁切区域侧面贴图地址 |
Example
multiClipping.modifyClippingRegion(regionId, {
depth: 20
});
1.3.5. multiRegionsClipping.removeClippingRegion(regionId) ⇒ Boolean
移除指定裁切区域
Param | Type |
---|---|
regionId | String |
1.3.6. multiRegionsClipping.flyToClippingRegion(regionId, [offset]) ⇒ Boolean
定位到指定id的裁切区域
Returns: Boolean
-
当前id裁切区域是否存在
Param | Type | Description |
---|---|---|
regionId | String |
指定id的裁切区域(添加时返回的) |
[offset] | HeadingPitchRange |
基于裁切区域包围球中心的偏移 |
Example
const radiansPerDegree = Math.PI / 180;
var offset = new BOSGeo.HeadingPitchRange(0, -90 * radiansPerDegree , 0);
multiClipping.flyToClippingRegion(regionId, offset); // 俯视开挖区域
1.3.7. multiRegionsClipping.removeAll()
移除所有裁切区域
1.3.8. multiRegionsClipping.destroy() ⇒ Object
销毁
Returns: Object
-
返回销毁后的对象