// 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(); }