Added event unbinding, fixed editing issues, and resolved problem of not deleting control points in edit mode.

This commit is contained in:
ethan 2023-08-29 16:09:39 +08:00
parent badc4a57cd
commit 9bfef7defb
4 changed files with 1345 additions and 771 deletions

View File

@ -49,6 +49,24 @@ const getCameraInfo = () => {
};
let geometry: any;
const dragStartHandler = () => {
console.error('start');
};
const drawUpdateHandler = (cartesian: Cesium.Cartesian3) => {
console.error('update', cartesian);
};
const drawEndHandler = (geometryPoints: any) => {
console.error('drawEnd', geometryPoints);
};
const editStartHandler = () => {
console.error('editStart');
};
const editEndHandler = (geometryPoints: any) => {
console.error('editEnd', geometryPoints);
};
const buttonGroup = document.getElementById('button-group') as HTMLElement;
buttonGroup.onclick = (evt) => {
const targetElement = evt.target as HTMLElement;
@ -121,21 +139,20 @@ buttonGroup.onclick = (evt) => {
break;
case 'addEvent':
if (geometry) {
geometry.on('drawStart', () => {
console.error('start');
});
geometry.on('drawUpdate', (cartesian: Cesium.Cartesian3) => {
console.error('update', cartesian);
});
geometry.on('drawEnd', (geometryPoints: any) => {
console.error('drawEnd', geometryPoints);
});
geometry.on('editStart', () => {
console.error('editStart');
});
geometry.on('editEnd', (geometryPoints: any) => {
console.error('editEnd', geometryPoints);
});
geometry.on('drawStart', dragStartHandler);
geometry.on('drawUpdate', drawUpdateHandler);
geometry.on('drawEnd', drawEndHandler);
geometry.on('editStart', editStartHandler);
geometry.on('editEnd', editEndHandler);
}
break;
case 'removeEvent':
if (geometry) {
geometry.off('drawStart', dragStartHandler);
geometry.off('drawUpdate', drawUpdateHandler);
geometry.off('drawEnd', drawEndHandler);
geometry.off('editStart', editStartHandler);
geometry.off('editEnd', editEndHandler);
}
break;
default:

View File

@ -54,6 +54,7 @@
<button id="show">显示</button>
<button id="remove">删除</button>
<button id="addEvent">绑定事件</button>
<button id="removeEvent">解绑事件</button>
</div>
<script>
window.CESIUM_BASE_URL = './examples/cesium';

2055
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -162,12 +162,13 @@ export default class Base {
* redraw, resulting in a flicker. However, this seems to be a relatively reasonable
* approach given the current circumstances."
*/
if (this.type === 'polygon') {
this.polygonEntity.polygon.hierarchy = new this.cesium.PolygonHierarchy(this.geometryPoints);
this.outlineEntity.polyline.positions = [...this.geometryPoints, this.geometryPoints[0]];
} else if (this.type === 'line') {
this.lineEntity.polyline.positions = this.geometryPoints;
}
// TODO...
// if (this.type === 'polygon') {
// this.polygonEntity.polygon.hierarchy = new this.cesium.PolygonHierarchy(this.geometryPoints);
// this.outlineEntity.polyline.positions = [...this.geometryPoints, this.geometryPoints[0]];
// } else if (this.type === 'line') {
// this.lineEntity.polyline.positions = this.geometryPoints;
// }
this.eventDispatcher.dispatchEvent('drawEnd', this.getPoints());
}