每一个entity中的渲染要素都是可以单独控制的。如果在不同的视点距离显示不同的要素,可以通过可选属性distanceDisplayCondition来实现。代码如下:
function addBillboardAndRectangle () {var entity = viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(116.43299999999988, 39.915999999999954, 70),billboard: {image: "../Cesium1_71/Apps/Sandcastle/images/facility.gif",distanceDisplayCondition: new Cesium.DistanceDisplayCondition(2000, 2000000000)},rectangle: {coordinates: Cesium.Rectangle.fromDegrees(116.43299999999988, 39.915999999999954,117.45299999999988, 41.915999999999954,),material: Cesium.Color.RED.withAlpha(0.5),outline: true,outlineColor: Cesium.Color.RED,classificationType: Cesium.ClassificationType.BOTH,distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 2000),},});viewer.flyTo(entity)
}
function addPointAndModel () {var position = Cesium.Cartesian3.fromDegrees(116.42299999999, 39.905999999999, 85)var heading = Cesium.Math.toRadians(135);var hpr = new Cesium.HeadingPitchRoll(heading, 0.0, 0.0);var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);viewer.entities.add({position: position,orientation: orientation,point: {pixelSize: 10,color: Cesium.Color.YELLOW,distanceDisplayCondition: new Cesium.DistanceDisplayCondition(250.0),},model: {uri: "../Cesium1_71/Apps/SampleData/models/GroundVehicle/GroundVehicle.glb",distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 250.0),},});
}
上面代码的addBillboardAndRectangle()函数的entity包含了billboard和rectangle两个要素,当视点距离在0到2000米时显示的是rectangle;当视点距离在2000到2000000000米时,显示的是billboard。
addPointAndModel()函数中,entity包含了point和model两个要素,当视点距离在0到250米时显示的是model;当视点距离在250米以上时,显示的是point。