问题:
Entity.XX的属性中如果有一个是CallbackProperty
则viewer.zoomTo(entity);会失效
环境:
Cesium.js的版本是1.94.1
问题代码如下:
let entity = viewer.entities.add({
rectangle: {
coordinates: Cesium.Rectangle.fromDegrees(103.0, 40.0, 105.0, 43.0),
material: "../images/Cesium_Logo_Color.jpg",
rotation: new Cesium.CallbackProperty(getRotationValue, false),//解决方案1
classificationType: Cesium.ClassificationType.TERRAIN,
height: 0,//解决方案2
},
});
viewer.zoomTo(entity);
解决方案1:
别使用CallbackProperty类型的属性
解决方案2:
给height属性赋一个值
即使height值为0也可以正常定位了
解决方案3:
升级Cesium.js的版本
1.108版本已经不存在这个问题了
其他可能的原因:
entity没有添加到viewer中,也是viewer.zoomTo()失效最常见的粗心原因
源码层面分析:
可以跟踪源码的具体位置是:
Viewer.js 第2299行代码
在这里因为CallbackProperty属性的问题
导致BoundingSphereState为PENDING
在Viewer.js第2305行的时候,直接被return掉了
无法去执行后续代码
导致viewer.zoomTo()返回的promise一直处于无法resolve的状态!!