function locatedPrimitive(primitive: Cesium.Primitive, viewer: Cesium.Viewer) {
//控制台输出model,有_boundingSpheres[0]属性
console.log(primitive)
//控制台输出属性,为undefined
console.log(primitive._boundingSpheres[0])
//报错未定义
var bounding = primitive._boundingSpheres[0];
console.log(primitive);
console.log(primitive._boundingSpheres[0]);
viewer.camera.viewBoundingSphere(bounding);
}
const addPrimitive = async (
primitive: Cesium.Primitive,
viewer: Cesium.Viewer,
) => {
//异步加载模型
var model_promise = Promise.resolve(viewer.scene.primitives.add(primitive))
//加载完成后定位到模型
model_promise.then((model:any)=>{
//定位函数
locatedPrimitive(model,viewer)
})
};
我使用了一个异步函数来添加primitive,加载完成后通过model的包围盒属性定位到model的位置,报错model的_boundingSpheres未定义
控制台中打印model和model._boundingSpheres,model定义,_boundingShpere未定义,如下图:
将addPrimitive修改后,打印出了model和model._boundingSpheres,但是我不希望使用setTimeout函数,才使用promise避免传入时间参数。
const addPrimitive = async (
primitive: Cesium.Primitive,
viewer: Cesium.Viewer,
) => {
//异步加载模型
var model_promise = Promise.resolve(viewer.scene.primitives.add(primitive))
//加载完成后定位到模型
model_promise.then((model:any)=>{
//定位函数
setTimeout(()=>{
locatedPrimitive(model,viewer)
}
,1000)
})
};