BaoXs
2022-05-14 ef260dff5d38c36272a2ac97d40db70ab3f8c2cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// var viewshedarr = []
// function onViewshed(options)
// {
//     // 分析参数
//     // var viewModel = { verticalAngle: 90, horizontalAngle: 120, distance: 10 };
//     // console.log(options);
//     // 添加可视域
//     var viewshed = new Cesium.ViewShed3D(viewer, {
//         horizontalAngle: Number(options.horizontalAngle),
//         verticalAngle: Number(options.verticalAngle),
//         distance: Number(options.distance),
//         frustum:true,
//         calback: function () {
//           options.distance = viewshed.distance
//         }
//     });
//     viewshedarr.push(viewshed);
// }
// function clearViewshed(){
//     for(let i in viewshedarr){
//       viewshedarr[i]._handler = viewshedarr[i]._handler&&viewshedarr[i]._handler.destroy();
//       viewshedarr[i].removeRadar();
//       viewer.scene.primitives.remove(viewshedarr[i]);
//     }
//     viewshedarr.length = 0;
// }
let  handler;
var startPosition;
var endPosition;
function onViewshed(options)
{
  ViewShed.clear();
  let i = 0  
      handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
      handler.setInputAction(movement =>
      {
        i++
        if(i === 1)
        {
          startPosition = viewer.scene.pickPosition(movement.position) //鼠标点击一次获取开始坐标
          if(!startPosition) return
          // var viewShed = new ViewShed(viewer,{
          //   viewPosition: startPosition,
          //   viewPositionEnd: startPosition,
          //   horizontalViewAngle: options.horizontalViewAngle,
          //   verticalViewAngle: options.verticalViewAngle
          // })
          // var viewShed = new Cesium.ViewShed();
          var op = {
            viewPosition: startPosition,
            viewPositionEnd: startPosition,
            horizontalViewAngle: options.horizontalAngle,
            verticalViewAngle: options.verticalAngle
          };
          
          ViewShed.create(viewer,op);
          handler.setInputAction(movement => //鼠标移动的事件
            {
              endPosition =  viewer.scene.pickPosition(movement.endPosition)
              if(!endPosition) return
              ViewShed.updatePosition(endPosition)
              if(!ViewShed.sketch) {
                ViewShed.drawSketch()
              }
            }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)         
        }
        if(i === 2) //鼠标点击两次获取结束坐标
        { 
          i = 0
          endPosition =  viewer.scene.pickPosition(movement.position)
          ViewShed.updatePosition(endPosition)
          ViewShed.update()
          handler = handler && handler.destroy()  //销毁鼠标事件      
        } 
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
}
 
function clearViewshed(){
  ViewShed.clear();
}