你不想用ScreenSpaceEventHandler
它来做这件事。相反,您订阅该preRender
事件并比较最后一帧的相机位置。以下是一些示例代码:
var lastTime = Cesium.getTimestamp();
var lastPosition = viewer.scene.camera.position.clone();
function preRender(scene) {
var time = Cesium.getTimestamp();
var position = scene.camera.position;
if (!Cesium.Cartesian3.equalsEpsilon(lastPosition, position, Cesium.Math.EPSILON4)) {
document.getElementById('viewChanged').style.display = 'block';
lastTime = time;
} else if (time - lastTime > 250) {
//hide the 'view changed' message after 250 ms of inactivity
lastTime = time;
document.getElementById('viewChanged').style.display = 'none';
}
lastPosition = position.clone();
}
viewer.scene.preRender.addEventListener(preRender);
我们计划在viewChanged
不久的将来向 Cesium 添加一个事件,也许是 1.8,但此代码将在此之后继续工作,您将能够在闲暇时切换到该事件。
如果您想要上述代码的现场演示,请参阅我们在 Cesium 中所做的更改 Google 地球演示的视图端口:http: //analyticalgraphicsinc.github.io/cesium-google-earth-examples/examples/viewchangeEvent.html