实现在三维场景中对添加到场景中的s3m小品模型进行拖拽重新定位
let modelDragHandler;
function openEntityDrag() {
let self = this;
if (!modelDragHandler) {
modelDragHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
modelDragHandler.setInputAction(({
position
}) => {
const pickInfo = viewer.scene.pick(position);
if (!pickInfo) {
return;
};
viewer.scene.screenSpaceCameraController.enableRotate = false;
modelDragHandler.setInputAction((arg) => {
const position = arg.endPosition;
const cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(position),viewer.scene);
const selectedEntity = viewer.selectedEntity;
if(!selectedEntity) {
return false;
}
let instance = selectedEntity.primitive;
let oldPosition = selectedEntity.primitive.position;
instance.updatePosition(cartesian);
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
modelDragHandler.setInputAction(({
position
}) => {
modelDragHandler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);
modelDragHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP);
viewer.scene.screenSpaceCameraController.enableRotate = true;
}, Cesium.ScreenSpaceEventType.LEFT_UP)
}, Cesium.ScreenSpaceEventType.LEFT_DOWN)
}
}
实现效果
