Cesium-Examples/examples/cesiumEx/analyser.js
2025-03-11 17:51:04 +08:00

70 lines
1.8 KiB
JavaScript

class analyser {
constructor(viewer) {
//初始化分析工具
this._viewer = viewer;
this.BEYONANALYSER_STATE = {
PREPARE: 0,
OPERATING: 1,
END: 2
};
//初始化
this.init();
}
init() {
//handler
this.handler = new Cesium.ScreenSpaceEventHandler(this._viewer.scene.canvas);
}
/**
* 提示框
* @param {*} bShow
* @param {*} position
* @param {*} message
*/
showTip(label, bShow, position, message, effectOptions) {
label.show = bShow;
if (bShow) {
if (position)
label.position = position;
if (message)
label.label.text = message;
if (effectOptions) {
for (let key in effectOptions) {
if (label.key) {
label.key = effectOptions[key];
}
}
}
}
}
/**
* 获取相交对象
* @param {*} startPos
* @param {*} endPos
* @param {*} excludeArr
* @param {*} bDrillPick
*/
getIntersectObj(startPos,endPos,excludeArr=[],bDrillPick=false){
var viewer=this._viewer;
var direction = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(endPos, startPos, new Cesium.Cartesian3()), new Cesium.Cartesian3());
var ray = new Cesium.Ray(startPos, direction); //无限延长的射线
var results = [];
if (bDrillPick) {
results = viewer.scene.drillPickFromRay(ray, 10, excludeArr);
} else //只pick首个物体
{
var result = viewer.scene.pickFromRay(ray, excludeArr);
if (Cesium.defined(result)) {
results = [result];
}
}
return results;
}
}