mirror of
				https://github.com/ethan-zf/cesium-plot-js.git
				synced 2025-11-04 09:14:18 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			195 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
window.onload = () => {
 | 
						|
  let raster = new Cesium.ArcGisMapServerImageryProvider({
 | 
						|
    url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',
 | 
						|
  });
 | 
						|
 | 
						|
  const viewer = new Cesium.Viewer('cesiumContainer', {
 | 
						|
    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,
 | 
						|
    },
 | 
						|
  });
 | 
						|
 | 
						|
  viewer.scene.postProcessStages.fxaa.enabled = true;
 | 
						|
  viewer.scene.camera.setView({
 | 
						|
    destination: Cesium.Cartesian3.fromDegrees(107.857, 35.594498, 10000),
 | 
						|
  });
 | 
						|
  //   let scene = viewer.scene;
 | 
						|
  //   viewer.scene.debugShowFramesPerSecond = true;
 | 
						|
 | 
						|
  //   viewer.camera.flyTo({
 | 
						|
  //     destination: new Cesium.Cartesian3(-2480561.3182985717, 4681691.324170088, 3539464.2534263907),
 | 
						|
  //     orientation: {
 | 
						|
  //       heading: 2.0002851646951996,
 | 
						|
  //       pitch: -0.25963088874216256,
 | 
						|
  //       roll: 6.283183024299778,
 | 
						|
  //     },
 | 
						|
  //     complete: function () {
 | 
						|
  //       console.error('fly complete');
 | 
						|
  //     },
 | 
						|
  //   });
 | 
						|
 | 
						|
  //   // let geometry = new CesiumPlot.Polygon(Cesium, viewer);
 | 
						|
  //   let geometry = new CesiumPlot.FineArrow(Cesium, viewer, {
 | 
						|
  //     material: Cesium.Color.fromCssColorString('rgba(255, 178, 208, 0.5)'),
 | 
						|
  //     outlineMaterial: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 1)'),
 | 
						|
  //     outlineWidth: 3,
 | 
						|
  //   });
 | 
						|
  let geometry;
 | 
						|
  const dragStartHandler = () => {
 | 
						|
    console.error('start');
 | 
						|
  };
 | 
						|
  const drawUpdateHandler = (cartesian) => {
 | 
						|
    console.error('update', cartesian);
 | 
						|
  };
 | 
						|
 | 
						|
  const drawEndHandler = (geometryPoints) => {
 | 
						|
    console.error('drawEnd', geometryPoints);
 | 
						|
  };
 | 
						|
 | 
						|
  const editStartHandler = () => {
 | 
						|
    console.error('editStart');
 | 
						|
  };
 | 
						|
 | 
						|
  const editEndHandler = (geometryPoints) => {
 | 
						|
    console.error('editEnd', geometryPoints);
 | 
						|
  };
 | 
						|
  const buttonGroup = document.getElementById('button-group');
 | 
						|
  buttonGroup.onclick = (evt) => {
 | 
						|
    const targetElement = evt.target;
 | 
						|
    switch (targetElement.id) {
 | 
						|
      case 'drawCircle':
 | 
						|
        geometry = new CesiumPlot.Circle(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawPolygon':
 | 
						|
        geometry = new CesiumPlot.Polygon(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawReactangle':
 | 
						|
        geometry = new CesiumPlot.Reactangle(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawTriangle':
 | 
						|
        geometry = new CesiumPlot.Triangle(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawFineArrow':
 | 
						|
        geometry = new CesiumPlot.FineArrow(Cesium, viewer, {
 | 
						|
          // material: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 0.5)'),
 | 
						|
          // outlineMaterial: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 1)'),
 | 
						|
          // outlineWidth: 3,
 | 
						|
        });
 | 
						|
        break;
 | 
						|
      case 'drawAttackArrow':
 | 
						|
        geometry = new CesiumPlot.AttackArrow(Cesium, viewer, {
 | 
						|
          // outlineMaterial: Cesium.Color.RED,
 | 
						|
        });
 | 
						|
        break;
 | 
						|
      case 'drawSwallowtailAttackArrow':
 | 
						|
        geometry = new CesiumPlot.SwallowtailAttackArrow(Cesium, viewer, {
 | 
						|
          // outlineMaterial: Cesium.Color.BLUE,
 | 
						|
        });
 | 
						|
        break;
 | 
						|
      case 'drawSquadCombat':
 | 
						|
        geometry = new CesiumPlot.SquadCombat(Cesium, viewer, {
 | 
						|
          // outlineMaterial: new Cesium.PolylineDashMaterialProperty({
 | 
						|
          //   color: Cesium.Color.RED,
 | 
						|
          //   dashLength: 16.0,
 | 
						|
          // }),
 | 
						|
        });
 | 
						|
        break;
 | 
						|
      case 'drawSwallowtailSquadCombat':
 | 
						|
        geometry = new CesiumPlot.SwallowtailSquadCombat(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawStraightArrow':
 | 
						|
        geometry = new CesiumPlot.StraightArrow(Cesium, viewer, {
 | 
						|
          // material: Cesium.Color.RED,
 | 
						|
        });
 | 
						|
        break;
 | 
						|
      case 'drawAssaultDirection':
 | 
						|
        geometry = new CesiumPlot.AssaultDirection(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawCurvedArrow':
 | 
						|
        geometry = new CesiumPlot.CurvedArrow(Cesium, viewer, {
 | 
						|
          // material: Cesium.Color.BLUE,
 | 
						|
        });
 | 
						|
        break;
 | 
						|
      case 'drawDoubleArrow':
 | 
						|
        geometry = new CesiumPlot.DoubleArrow(Cesium, viewer, {
 | 
						|
          // outlineMaterial: Cesium.Color.GREEN,
 | 
						|
        });
 | 
						|
        break;
 | 
						|
      case 'drawFreehandLine':
 | 
						|
        geometry = new CesiumPlot.FreehandLine(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawCurve':
 | 
						|
        geometry = new CesiumPlot.Curve(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawEllipse':
 | 
						|
        geometry = new CesiumPlot.Ellipse(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawLune':
 | 
						|
        geometry = new CesiumPlot.Lune(Cesium, viewer);
 | 
						|
        break;
 | 
						|
      case 'drawFreehandPolygon':
 | 
						|
        geometry = new CesiumPlot.FreehandPolygon(Cesium, viewer, {
 | 
						|
          // material: Cesium.Color.GREEN,
 | 
						|
          // outlineMaterial: Cesium.Color.fromCssColorString('rgba(59, 178, 208, 1)'),
 | 
						|
          // outlineWidth: 2,
 | 
						|
        });
 | 
						|
        break;
 | 
						|
      case 'hide':
 | 
						|
        geometry &&
 | 
						|
          geometry.hide({
 | 
						|
            deration: 2000,
 | 
						|
          });
 | 
						|
        break;
 | 
						|
      case 'show':
 | 
						|
        geometry &&
 | 
						|
          geometry.show({
 | 
						|
            deration: 2000,
 | 
						|
          });
 | 
						|
        break;
 | 
						|
      case 'remove':
 | 
						|
        geometry && geometry.remove();
 | 
						|
        geometry = null;
 | 
						|
        break;
 | 
						|
      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);
 | 
						|
        }
 | 
						|
        break;
 | 
						|
      case 'startGrowthAnimation':
 | 
						|
        if (geometry) {
 | 
						|
          geometry.startGrowthAnimation({
 | 
						|
            duration: 2000,
 | 
						|
          });
 | 
						|
        }
 | 
						|
        break;
 | 
						|
      default:
 | 
						|
        break;
 | 
						|
    }
 | 
						|
  };
 | 
						|
};
 |