skylineAnalysis.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <div class="ZTGlobal" style="margin: 1rem;">
  3. <el-form>
  4. <el-form-item>宽度:
  5. <el-input-number min="0" max="1000" :step="1" v-model="faceW" @change="farChange"></el-input-number>
  6. </el-form-item>
  7. <el-form-item>高度:
  8. <el-input-number min="0" max="500" :step="1" v-model="faceH" @change="heightChange"></el-input-number>
  9. </el-form-item>
  10. <el-form-item>
  11. <el-button @click="draw">绘制范围</el-button>
  12. <el-button @click="create">分析</el-button>
  13. <el-button @click="clear">取消</el-button>
  14. </el-form-item>
  15. </el-form>
  16. </div>
  17. </template>
  18. <script>
  19. import TJXResult from './TJXResult.vue'
  20. var drawHandler;
  21. var facade
  22. export default {
  23. data() {
  24. return {
  25. faceW: 200,
  26. faceH: 100,
  27. }
  28. },
  29. mounted() {
  30. facade = new Cesium.Facade(scene);
  31. facade.build();
  32. },
  33. methods: {
  34. draw() {
  35. var that = this;
  36. viewer.entities.removeAll()
  37. // facade.clear();
  38. drawHandler = new Cesium.DrawHandler(
  39. viewer,
  40. Cesium.DrawMode.Line,
  41. 0
  42. );
  43. drawHandler.activate()
  44. // drawHandler.activeEvt.addEventListener(function (isActive) {
  45. // });
  46. // drawHandler.movingEvt.addEventListener(function (windowPosition) {
  47. // });
  48. drawHandler.drawEvt.addEventListener(function (result) {
  49. debugger
  50. // var averageH = result.object.positions[0].z + result.object.positions[1].z
  51. var startPoint = result.object.positions[0];
  52. var endPoint = result.object.positions[1];
  53. // var averageH =(startPoint.z +endPoint.z)/2
  54. // startPoint.z = averageH
  55. // endPoint.z = averageH
  56. // var point1 = that.Cartesian2toDegrees(startPoint)
  57. // point1[2] += 2
  58. // var point2 = that.Cartesian2toDegrees(endPoint)
  59. // point2[2] += 2
  60. // facade.startPoint = Cesium.Cartesian3.fromDegrees(point1[0], point1[1], point1[2]);
  61. // facade.endPoint = Cesium.Cartesian3.fromDegrees(point2[0], point2[1], point2[2]);
  62. facade.startPoint = startPoint
  63. facade.endPoint =endPoint
  64. facade.maxHeight = parseFloat(that.faceH)
  65. facade.farDistance = parseFloat(that.faceW)
  66. })
  67. },
  68. Cartesian2toDegrees(position) {
  69. var cartographic = Cesium.Cartographic.fromCartesian(position);
  70. var longitude = Cesium.Math.toDegrees(cartographic.longitude);
  71. var latitude = Cesium.Math.toDegrees(cartographic.latitude);
  72. var height = cartographic.height;
  73. return [longitude, latitude, height];
  74. },
  75. create() {
  76. var that = this;
  77. facade.readyPromise.then(function (base64data) {
  78. debugger
  79. that.$layer.iframe({
  80. content: {
  81. content: TJXResult, //传递的组件对象
  82. parent: that, //当前的vue对象
  83. data: { 'imageData': { 'height': that.faceH, 'width': that.faceW, 'data': base64data } }, //props
  84. },
  85. area: ["60rem", "30rem"], //宽 高
  86. title: "天际线分析结果",
  87. maxmin: false,
  88. shade: false, //是否显示遮罩
  89. shadeClose: false, //点击遮罩是否关闭
  90. cancel: () => {
  91. //关闭事件
  92. },
  93. });
  94. });
  95. },
  96. farChange() {
  97. facade.farDistance = parseFloat(this.faceW)
  98. },
  99. heightChange() {
  100. facade.maxHeight = parseFloat(this.faceH)
  101. },
  102. clear() {
  103. viewer.entities.removeAll()
  104. facade.clear();
  105. drawHandler.clear();
  106. }
  107. }
  108. }
  109. </script>
  110. <style></style>