2023-08-16 08:17:33 +00:00
|
|
|
import CesiumPlot from '../src';
|
2024-02-22 13:54:59 +00:00
|
|
|
import * as Cesium from 'cesium';
|
2024-02-23 07:41:39 +00:00
|
|
|
import 'cesium/Build/Cesium/Widgets/widgets.css';
|
2024-01-24 08:45:32 +00:00
|
|
|
let raster = new Cesium.ArcGisMapServerImageryProvider({
|
|
|
|
url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',
|
2023-08-08 11:45:54 +00:00
|
|
|
});
|
2024-01-24 08:45:32 +00:00
|
|
|
|
2023-08-16 08:17:33 +00:00
|
|
|
const viewer = new Cesium.Viewer('cesiumContainer', {
|
2024-03-17 02:10:52 +00:00
|
|
|
animation: false,
|
|
|
|
shouldAnimate: true,
|
|
|
|
geocoder: false,
|
|
|
|
homeButton: false,
|
|
|
|
infoBox: false,
|
|
|
|
fullscreenButton: false,
|
|
|
|
sceneModePicker: false,
|
|
|
|
selectionIndicator: false,
|
|
|
|
timeline: false,
|
|
|
|
navigationHelpButton: false,
|
|
|
|
baseLayerPicker: false,
|
|
|
|
imageryProvider: raster,
|
|
|
|
contextOptions: {
|
|
|
|
requestWebgl2: true,
|
|
|
|
},
|
2023-08-08 11:45:54 +00:00
|
|
|
});
|
2023-08-08 07:41:52 +00:00
|
|
|
|
2023-08-09 09:55:29 +00:00
|
|
|
viewer.scene.postProcessStages.fxaa.enabled = true;
|
2023-08-08 11:45:54 +00:00
|
|
|
viewer.scene.camera.setView({
|
2024-01-24 08:45:32 +00:00
|
|
|
destination: Cesium.Cartesian3.fromDegrees(107.857, 35.594498, 10000),
|
2023-08-08 11:45:54 +00:00
|
|
|
});
|
|
|
|
|
2023-08-23 09:53:39 +00:00
|
|
|
let geometry: any;
|
2024-05-20 11:04:08 +00:00
|
|
|
let geometryType: string;
|
2023-08-29 08:09:39 +00:00
|
|
|
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);
|
|
|
|
};
|
2024-03-23 10:45:05 +00:00
|
|
|
|
2023-08-22 06:19:21 +00:00
|
|
|
const buttonGroup = document.getElementById('button-group') as HTMLElement;
|
|
|
|
buttonGroup.onclick = (evt) => {
|
2024-05-20 11:04:08 +00:00
|
|
|
const targetElement = evt.target as HTMLElement;
|
|
|
|
geometryType = targetElement.id;
|
|
|
|
geometry = new CesiumPlot[geometryType](Cesium, viewer, {
|
|
|
|
material: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 0.5)'),
|
|
|
|
outlineMaterial: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 1)'),
|
|
|
|
outlineWidth: 3,
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const operationButtonGroup = document.getElementById('operation-button-group') as HTMLElement;
|
|
|
|
operationButtonGroup.onclick = (evt) => {
|
2023-08-22 06:19:21 +00:00
|
|
|
const targetElement = evt.target as HTMLElement;
|
|
|
|
switch (targetElement.id) {
|
2023-08-23 09:53:39 +00:00
|
|
|
case 'hide':
|
2024-03-17 02:10:52 +00:00
|
|
|
geometry &&
|
|
|
|
geometry.hide({
|
|
|
|
duration: 1000,
|
|
|
|
delay: 0,
|
|
|
|
});
|
2023-08-23 09:53:39 +00:00
|
|
|
break;
|
|
|
|
case 'show':
|
|
|
|
geometry && geometry.show();
|
|
|
|
break;
|
|
|
|
case 'remove':
|
|
|
|
geometry && geometry.remove();
|
2024-04-30 07:00:48 +00:00
|
|
|
// geometry = null;
|
2023-08-22 07:40:58 +00:00
|
|
|
break;
|
2023-08-24 07:55:04 +00:00
|
|
|
case 'addEvent':
|
|
|
|
if (geometry) {
|
2023-08-29 08:09:39 +00:00
|
|
|
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);
|
2023-08-24 07:55:04 +00:00
|
|
|
}
|
|
|
|
break;
|
2024-03-23 10:45:05 +00:00
|
|
|
case 'startGrowthAnimation':
|
|
|
|
if (geometry) {
|
|
|
|
geometry.startGrowthAnimation();
|
|
|
|
}
|
|
|
|
break;
|
2024-04-30 07:00:48 +00:00
|
|
|
case 'createGeometryFromData':
|
|
|
|
if (geometry) {
|
|
|
|
const points = geometry.getPoints();
|
2024-05-20 11:04:08 +00:00
|
|
|
geometry = CesiumPlot.createGeometryFromData(Cesium, viewer, {
|
|
|
|
type: geometryType,
|
2024-05-17 01:44:41 +00:00
|
|
|
cartesianPoints: points,
|
2024-05-20 11:58:10 +00:00
|
|
|
style: {
|
|
|
|
material: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 0.5)'),
|
|
|
|
outlineMaterial: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 1)'),
|
|
|
|
outlineWidth: 3,
|
|
|
|
},
|
2024-05-17 01:44:41 +00:00
|
|
|
});
|
2024-05-14 01:32:07 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 'cancelDraw':
|
|
|
|
if (geometry) {
|
|
|
|
geometry.remove();
|
2024-04-30 07:00:48 +00:00
|
|
|
}
|
|
|
|
break;
|
2023-08-22 06:19:21 +00:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
2023-08-21 10:02:00 +00:00
|
|
|
};
|