ConditionsExpression
表示CESIUM中用于条件测试的表达式。它可以在任何支持条件表达式的场景中使用。
ConditionsExpression
的语法有两种:
使用字符串模板语法来指定条件表达式的布尔值。模板语法的表现形式如下:
(constant || expression) ? trueResult : falseResult
传递一个回调函数作为表达式参数,参数为当前场景帧的Time
对象。
(time) => (expression) ? trueResult : falseResult
字符串语法示例
import { ConditionsExpression } from 'cesium';
const simpleExpression = ConditionsExpression.fromString('distance > 100000.0 ? 0.0 : 1.0');
回调语法示例
import { ConditionsExpression } from 'cesium';
const callbackExpression = ConditionsExpression.fromCallback((time) => {
return time.secondsOfDay > 35400 ? true : false
});
fromString(stringExpression)
返回一个使用字符串语法的ConditionsExpression
对象。接受一个格式为const || expression ? trueResult : falseResult
的字符串参数。
fromCallback(callback)
返回一个使用回调函数语法的ConditionsExpression
对象。接受一个格式为(time) => boolean
的回调函数参数。
evaluate(time, result)
使用当前的Time
对象求出布尔值。接受一个Time
对象作为第一个参数,在第二个参数中返回表达式的结果。如果不提供第二个参数,则返回布尔值。
import { Cartesian3 } from 'cesium';
import { Entity, Viewer, ConstantPositionProperty, TimeIntervalCollection, TimeInterval, ConditionsExpression } from 'cesium';
const viewer = new Viewer('cesiumContainer');
const entity = viewer.entities.add({
name: 'Arrow Entity',
position: new ConstantPositionProperty(Cartesian3.fromDegrees(-75.59777, 40.03883)),
billboard: {
image: 'https://cesium.com/docs/tutorials/quickstart-guide/Assets/Images/facility.gif',
height: 40,
width: 40,
scaleByDistance: new TimeIntervalCollection([ new TimeInterval({ start: 0, stop: 100000, data: 1.5 }), ]),
show: ConditionsExpression.fromString('distance > 100000.0 ? false : true')
}
});