1、自定义Primitive属性------自定义图形
注意自定义图形的对象id为object类型,可以使用它来为我们添加自定义属性
var defaultInfo = {nihao:'我爱你',photoInfo:[123,456,789]}
var instance = new Cesium.GeometryInstance({
geometry: new Cesium.EllipseGeometry({
center: Cesium.Cartesian3.fromDegrees(-100.0, 20.0),
semiMinorAxis: 500000.0,
semiMajorAxis: 1000000.0,
rotation: Cesium.Math.PI_OVER_FOUR,
vertexFormat: Cesium.VertexFormat.POSITION_AND_ST
}),
id:defaultInfo // id是个object对象,里面可以自定义说明信息
});
var defaultGeometry = new Cesium.Primitive({
geometryInstances: instance,
appearance: new Cesium.EllipsoidSurfaceAppearance({
material: Cesium.Material.fromType('Checkerboard')
})
});
viewer.scene.primitives.add(defaultGeometry);
通过getGeometryInstanceAttributes来获取自定义图形的属性
var attribute = defaultGeometry.getGeometryInstanceAttributes(instance.id)//获取自定义属性
获取自定义属性:
通过点击来获取属性
// 鼠标拾取
function addIntroduceModels() {
this.eventHandler = new Cesium.ScreenSpaceEventHandler(
viewer.scene.canvas
);
this.eventHandler.setInputAction(movement => {
var isVisable = false;
var pickedObject = viewer.scene.pick(movement.position);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
}
2、自定义Primitive属性 ---- 自定义模型gltf或3dTiles
同理可以看到model中fromGltf中包含id对象,id对象的类型为object,所以可以通过id来自定义属性
var coord = Cesium.Cartesian3.fromDegrees(116.3912, 39.920, 0.0);
//创建一个东(X,红色)北(Y,绿色)上(Z,蓝色)的本地坐标系统
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(coord);
// 为gltf模型自定义属性
var defaultInfoModel = {nihao:'我爱你',photoInfo:[123,456,789]}
var model = Cesium.Model.fromGltf({
id: defaultInfoModel,
url: './Resource/01.fbx.glb',
clampToGround: true,
modelMatrix: modelMatrix,
scale: 100
});
var planPrimitiveDef = viewer.scene.primitives.add(
model
);
viewer.camera.flyToBoundingSphere(new Cesium.BoundingSphere(coord, 30000));
通过点击来获取属性: