const handle_MOUSE_MOVE_CLICK = () => {
handlerDisDown = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handlerDisDown.setInputAction(function(event) {
let pickedObject = viewer.scene.pick(event.position);
if (!pickedObject) {
return
}
viewer.scene.screenSpaceCameraController.enableRotate = false;// 相机锁定
if (pickedObject.id.point) {
let cartographic1 = Cesium.Cartographic.fromCartesian(pickedObject.primitive.position);
let latitude = Cesium.Math.toDegrees(cartographic1.latitude);
let longitude = Cesium.Math.toDegrees(cartographic1.longitude)
// 移动前的点
selectedPoint.value = [+longitude.toFixed(6),+latitude.toFixed(6)]
}
handlerDisDown.setInputAction((arg) => { // 为viewer绑定MOUSE_MOVE事件监听器(执行函数,监听的事件)
const position = arg.endPosition;
const cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(position), viewer.scene);
if (pickedObject.id.point) {
//注意需要赋值三维坐标
selectedEntity.position=cartesian
// 更新实体位置为当前鼠标位置
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
handlerDisDown.setInputAction(() => { //为viewer绑定LEFT_UP事件监听器(执行函数,监听的事件)
if (pickedObject.id.point) {
let cartesian = selectedEntity.position._value
let cartographic1 = Cesium.Cartographic.fromCartesian(cartesian);
let latitude = Cesium.Math.toDegrees(cartographic1.latitude);
let longitude = Cesium.Math.toDegrees(cartographic1.longitude);
console.log(longitude ,latitude , )// 移动后的点
handlerDisDown.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE); // 解除viewer的MOUSE_MOVE事件监听器
handlerDisDown.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP); // 解除viewer的LEFT_UP事件监听器
viewer.scene.screenSpaceCameraController.enableRotate = true; // 取消相机锁定
}, Cesium.ScreenSpaceEventType.LEFT_UP)
}, Cesium.ScreenSpaceEventType.LEFT_DOWN);
}
在 LEFT_DOWN 事件里面获取移动前坐标
在 MOUSE_MOVE 事件里面移动
在 LEFT_UP 事件里面获取移动后坐标 并移除事件