首先新建鼠标事件
let handler = new Cesium.screenSpaceEventHandler(viewer.scene.canvas)
handler.setInputAction(function(moment){
console.log(moment.position)
let position = viewer.scene.camera.pickEllipsoid(
moment.position, viewer.scene.globe.ellipsoid
)
let ray = viewer.camera.getPickRay(moment.position)
let position = viewer.scene.globe.pick(ray, viewer.scene)
let position = viewer.scene.pickPosition(moment.position)
})
添加初始位置
let boundingSphere = new Cesium.BoundingSphere(
Cesium.Cartesian3.fromDegrees(114.20675959266403,30.410971965298703,0),
150
);
this.viewer.camera.flyToBoundingSphere(boundingSphere, {
orientation: {
heading: 6.283185307179579,
pitch: -1.5687883056041918,
roll: 0,
},
// 定位到初始位置的过渡时间,设置成0,就没有过渡,类似一个过场的动画时长
duration: 0,
});
内容不够,那就加一点Cesium 常用事件(鼠标事件、相机事件、键盘事件、场景触发事件)
- 鼠标事件(键盘事件)new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
LEFT_DOWN 鼠标左键按下
LEFT_UP 鼠标左键弹起
LEFT_CLICK 鼠标左键点击
LEFT_DOUBLE_CLICK 鼠标左键双击
RIGHT_DOWN 鼠标右键按下
RIGHT_UP 鼠标右键弹起
RIGHT_CLICK 鼠标右键单击
MIDDLE_DOWN 鼠标中键按下
MIDDLE_UP 鼠标中键弹起
MIDDLE_CLICK 鼠标中键点击
MOUSE_MOVE 鼠标移动事件。
WHEEL 鼠标滚轮滚动
PINCH_START 触控屏上双指开始事件
PINCH_END 触控屏上双指结束事件
PINCH_MOVE 触控屏上双指移动事件
SHIFT shift键被按住
CTRL ctrl键被按住
ALT alt键被按住
let handler = new Cesium.screenSpaceEventHandler(viewer.scene.canvas)
handler.setInputAction(function(event){
console.log('shift + 左键单击', event.position);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK, Cesium.KeyboardEventModifier.SHIFT)
handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK, Cesium.KeyboardEventModifier.SHIFT)
- 相机事件viewer.scene.screenSpaceCameraController()
// 相机事件
LEFT_DRAG 鼠标左键按住,然后移动鼠标并松开按键。
RIGHT_DRAG 鼠标右键按住,然后移动鼠标并松开按键。
MIDDLE_DRAG 鼠标中键按住,然后移动鼠标并松开按键。
WHEEL 滚动鼠标中键滚轮。
PINCH 双指触控屏幕。
// 相机事件的属性(用来修改默认操作模式)
lookEventTypes 3D视图、2.5D视图改变相机观察方向
rotateEventTypes 3D视图相机绕地球旋转
tiltEventTypes 3D视图、2.5D视图倾斜视角
translateEventTypes 2.5D视图、2D视图地图上平移
zoomEventTypes 地图缩放
inertiaTranslate 移动惯性
inertiaSpin 旋转惯性
// 例如
//设置操作习惯(禁止中间滑轮旋转视角) 允许用户放大/缩小的输入。 //鼠标滑轮与两指缩放
viewer.scene.screenSpaceCameraController.zoomEventTypes = [
Cesium.CameraEventType.WHEEL, Cesium.CameraEventType.PINCH
]
//允许用户以3D和Columbus视图倾斜(旋转)或以2D扭曲的输入。 //按下鼠标右键与两指拖拽
viewer.scene.screenSpaceCameraController.tiltEventTypes = [
Cesium.CameraEventType.PINCH, Cesium.CameraEventType.LEFT_DRAG
]
// 将原来鼠标左键拖动平移视图修改为鼠标右键拖动
viewer.scene.screenSpaceCameraController.rotateEventTypes = [Cesium.CameraEventType.RIGHT_DRAG]
//相机平移旋转惯性为0
viewer.scene.screenSpaceCameraController.inertiaTranslate = 0
viewer.scene.screenSpaceCameraController.inertiaSpin = 0
- 常用场景触发事件
- Cesium3DTileset.allTilesLoaded: 所有3dtiles数据加载完成以后触发
- Cesium3DTileset.loadProgress 3dtiles初始化加载过程中触发
- Cesium3DTileset.tileFailed 3dtiles瓦片加载失败时触发
- Cesium3DTileset-initialTilesLoaded 3dtiles瓦片初始加载触发
- Cesium3DTileset-tileLoad 遍历瓦片集(tileset)期间被触发
- Clock-onStop 当时间到达 Clock#stopTime 时触发的事件
- Clock-onTick 当 Clock#tick函数被调用时触发的事件。Viewer初始化时会绑定clock.onTick事件,确保每一帧都会调用