cesium-plot-js/examples/index.ts

178 lines
5.5 KiB
TypeScript
Raw Normal View History

2023-08-16 08:17:33 +00:00
import CesiumPlot from '../src';
2023-08-14 09:47:59 +00:00
// import CesiumPlot from "../dist/CesiumPlot";
2023-08-16 08:17:33 +00:00
import * as Cesium from './cesium/index';
2023-08-08 07:41:52 +00:00
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', {
2023-08-08 11:45:54 +00:00
animation: false,
shouldAnimate: true,
geocoder: false,
homeButton: false,
infoBox: false,
fullscreenButton: false,
sceneModePicker: false,
selectionIndicator: false,
timeline: false,
navigationHelpButton: false,
baseLayerPicker: false,
2023-08-23 09:53:39 +00:00
imageryProvider: raster,
2023-08-08 11:45:54 +00:00
contextOptions: {
requestWebgl2: true,
},
});
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
const getCameraInfo = () => {
var position = viewer.camera.position;
var ellipsoid = viewer.scene.globe.ellipsoid;
var cartographic = ellipsoid.cartesianToCartographic(position);
var longitude = Cesium.Math.toDegrees(cartographic.longitude);
var latitude = Cesium.Math.toDegrees(cartographic.latitude);
console.error('camera position:', longitude, latitude);
var position = viewer.camera.position;
var ellipsoid = viewer.scene.globe.ellipsoid;
var cartographic = ellipsoid.cartesianToCartographic(position);
var height = cartographic.height;
console.error('camera height:', height);
};
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);
};
2023-08-22 06:19:21 +00:00
const buttonGroup = document.getElementById('button-group') as HTMLElement;
buttonGroup.onclick = (evt) => {
const targetElement = evt.target as HTMLElement;
switch (targetElement.id) {
2024-01-30 08:12:08 +00:00
case 'drawCircle':
geometry = new CesiumPlot.Circle(Cesium, viewer);
break;
2024-01-30 07:56:22 +00:00
case 'drawPolygon':
geometry = new CesiumPlot.Polygon(Cesium, viewer);
break;
2024-01-24 08:45:32 +00:00
case 'drawReactangle':
geometry = new CesiumPlot.Reactangle(Cesium, viewer);
break;
2024-01-25 01:15:08 +00:00
case 'drawTriangle':
geometry = new CesiumPlot.Triangle(Cesium, viewer);
break;
2023-08-22 06:19:21 +00:00
case 'drawFineArrow':
2023-08-23 09:53:39 +00:00
geometry = new CesiumPlot.FineArrow(Cesium, viewer, {
2023-08-24 03:04:58 +00:00
material: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 0.5)'),
outlineMaterial: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 1)'),
outlineWidth: 3,
2023-08-23 03:49:11 +00:00
});
2023-08-22 06:19:21 +00:00
break;
case 'drawAttackArrow':
2023-08-23 09:53:39 +00:00
geometry = new CesiumPlot.AttackArrow(Cesium, viewer, {
2023-08-24 03:04:58 +00:00
outlineMaterial: Cesium.Color.RED,
2023-08-23 03:49:11 +00:00
});
2023-08-22 06:19:21 +00:00
break;
case 'drawSwallowtailAttackArrow':
2023-08-23 09:53:39 +00:00
geometry = new CesiumPlot.SwallowtailAttackArrow(Cesium, viewer, {
2023-08-24 03:04:58 +00:00
outlineMaterial: Cesium.Color.BLUE,
2023-08-23 03:49:11 +00:00
});
2023-08-22 06:19:21 +00:00
break;
case 'drawSquadCombat':
2023-08-24 03:04:58 +00:00
geometry = new CesiumPlot.SquadCombat(Cesium, viewer, {
outlineMaterial: new Cesium.PolylineDashMaterialProperty({
color: Cesium.Color.RED,
dashLength: 16.0,
}),
});
2023-08-22 06:19:21 +00:00
break;
case 'drawSwallowtailSquadCombat':
2023-08-23 09:53:39 +00:00
geometry = new CesiumPlot.SwallowtailSquadCombat(Cesium, viewer);
2023-08-22 06:19:21 +00:00
break;
case 'drawStraightArrow':
2023-08-23 09:53:39 +00:00
geometry = new CesiumPlot.StraightArrow(Cesium, viewer, {
2023-08-24 03:04:58 +00:00
material: Cesium.Color.RED,
2023-08-23 03:49:11 +00:00
});
2023-08-22 06:19:21 +00:00
break;
case 'drawAssaultDirection':
2023-08-23 09:53:39 +00:00
geometry = new CesiumPlot.AssaultDirection(Cesium, viewer);
2023-08-22 06:19:21 +00:00
break;
case 'drawCurvedArrow':
2023-08-23 09:53:39 +00:00
geometry = new CesiumPlot.CurvedArrow(Cesium, viewer, {
2023-08-24 03:04:58 +00:00
material: Cesium.Color.BLUE,
2023-08-23 03:49:11 +00:00
});
2023-08-22 06:19:21 +00:00
break;
2023-08-22 07:21:28 +00:00
case 'drawDoubleArrow':
2023-08-23 09:53:39 +00:00
geometry = new CesiumPlot.DoubleArrow(Cesium, viewer, {
2023-08-24 03:04:58 +00:00
outlineMaterial: Cesium.Color.GREEN,
2023-08-23 03:49:11 +00:00
});
2023-08-22 07:21:28 +00:00
break;
case 'drawFreehandLine':
2023-08-23 09:53:39 +00:00
geometry = new CesiumPlot.FreehandLine(Cesium, viewer);
2023-08-22 07:21:28 +00:00
break;
2023-09-01 10:27:01 +00:00
case 'drawCurve':
geometry = new CesiumPlot.Curve(Cesium, viewer);
break;
2023-09-08 08:17:31 +00:00
case 'drawEllipse':
geometry = new CesiumPlot.Ellipse(Cesium, viewer);
break;
2023-09-08 08:19:49 +00:00
case 'drawLune':
geometry = new CesiumPlot.Lune(Cesium, viewer);
break;
2023-08-22 07:40:58 +00:00
case 'drawFreehandPolygon':
2023-08-24 07:55:04 +00:00
geometry = new CesiumPlot.FreehandPolygon(Cesium, viewer, {
material: Cesium.Color.GREEN,
outlineMaterial: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 1)'),
outlineWidth: 2,
});
2023-08-23 09:53:39 +00:00
break;
case 'hide':
geometry && geometry.hide();
break;
case 'show':
geometry && geometry.show();
break;
case 'remove':
geometry && geometry.remove();
geometry = null;
2023-08-22 07:40:58 +00:00
break;
2023-08-24 07:55:04 +00:00
case 'addEvent':
if (geometry) {
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;
2023-08-22 06:19:21 +00:00
default:
break;
}
2023-08-21 10:02:00 +00:00
};