在地图开发中,地图移动、鼠标操作等一系列事件,都会使用到,而在地图封装的API中,一般都会进行提供。
Cesium开发中,会使用到对应的一些事件,下边列举一些常用的事件以及事件的使用。
Cesium相机移动结束事件,这个在判断地图场景是否移动完成中进行使用,在移动完后,获取地图的相机坐标或者其他的一些坐标信息。
viewer.scene.camera.moveEnd.addEventListener(function() {
//实现对应的移动结束操作
});
鼠标移动事件,这个在判断当前地图的鼠标所在位置,获取鼠标位置的坐标,同时能够判断当前鼠标处,是否存在地图中的对象。
var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function (movement) {
//鼠标移动的结束坐标,也有起始坐标
var pickedObject = scene.pick(movement.endPosition);
//判断当前鼠标处,是否有对象
if (
Cesium.defined(pickedObject) &&
pickedObject.id instanceof Cesium.Entity
) {
//实体对象的处理
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
//鼠标的点击事件,这个是判断数据点击所在的位置
var handler.setInputAction(function (movement) {
//此处就只有鼠标的点击位置了
var pickedObject = scene.pick(movement.position);
if (
//同样也是判断点击处的对象信息
Cesium.defined(pickedObject) &&
pickedObject.id instanceof Cesium.Entity
) {
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
在使用完成后,用以下的方式去移除不需要的事件。
//移除鼠标点击事件
handler.removeInputAction(
Cesium.ScreenSpaceEventType.LEFT_CLICK
);
//移除鼠标移动事件
handler.removeInputAction(
Cesium.ScreenSpaceEventType.MOUSE_MOVE
);
下边的是Cesium场景的实时渲染事件,每间隔很短的一个时间,就会执行一次事件,这个可以判断场景中的一些实时的对象情况。
viewer.scene.preRender.addEventListener(function() {
});
其他的还有诸如鼠标的滚轮事件、鼠标按下或抬起的事件,这在Cesium的API文档中都能进行找到使用。