Example.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <!-- 时空算子库 -->
  3. <div class="example">
  4. <div id="skysceneryContainer"></div>
  5. <!-- 操作栏 -->
  6. <ControlPanel ref="controlPanel" />
  7. </div>
  8. </template>
  9. <script>
  10. import ControlPanel from "../../components/wgn/controlPanel.vue";
  11. // 需要开发出一个时空算子库的示例页面:需要能绘制点线面的工具,且能包装绘制的几何对象传入到后台接口中
  12. export default {
  13. name: "wgnExample",
  14. // 2. 局部注册组件(键值同名可简写)
  15. components: {
  16. ControlPanel, // 完整写法:MyButton: MyButton
  17. },
  18. data() {
  19. return {};
  20. },
  21. mounted() {
  22. window.SkySceneryConfig = {};
  23. window.loadScripts(systemConfig.example.scriptArr).then(() => {
  24. this.creatMap();
  25. });
  26. // app.vue已经加过了
  27. // window.loadScripts([systemConfig.scriptMain]).then(() => {
  28. // this.creatMap();
  29. // });
  30. },
  31. methods: {
  32. creatMap() {
  33. window.viewer = new SkyScenery.Viewer("skysceneryContainer", {
  34. animation: false, //是否创建动画小器件,左下角仪表
  35. baseLayerPicker: false, //是否显示图层选择器
  36. imageryProvider: new SkyScenery.SingleTileImageryProvider({
  37. url: (function createColorCanvas(color) {
  38. var width = 1,
  39. height = 1;
  40. var canvas = document.createElement("canvas");
  41. canvas.width = width;
  42. canvas.height = height;
  43. var ctx = canvas.getContext("2d");
  44. ctx.fillStyle = color;
  45. ctx.fillRect(0, 0, width, height);
  46. return canvas.toDataURL();
  47. })("#ffffff00"),
  48. rectangle: SkyScenery.Rectangle.fromDegrees(-180.0, -90.0, 180.0, 90.0),
  49. }),
  50. fullscreenButton: false, //是否显示全屏按钮
  51. geocoder: false, //是否显示geocoder小器件,右上角查询按钮
  52. homeButton: false, //是否显示Home按钮
  53. infoBox: false, //是否显示信息框
  54. sceneModePicker: false, //是否显示3D/2D选择器
  55. selectionIndicator: false, //是否显示选取指示器组件
  56. timeline: false, //是否显示时间轴
  57. navigationHelpButton: false, //是否显示右上角的帮助按钮
  58. scene3DOnly: true, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
  59. shouldAnimate: false, //是否自动播放
  60. // 性能优化配置
  61. requestRenderMode: true,
  62. maximumRenderTimeChange: Infinity,
  63. preserveDrawingBuffer: false,
  64. useBrowserRecommendedResolution: true,
  65. });
  66. // 添加地图服务
  67. viewer.imageryLayers.addImageryProvider(
  68. new SkyScenery.CGCS2000ArcGisMapServerImageryProvider({
  69. url: systemConfig.wgn.layerUrl + SkySceneryConfig.token,
  70. // enablePickFeatures: false, // 禁用要素拾取功能以提高性能
  71. })
  72. );
  73. // 定位
  74. viewer.camera.setView({
  75. destination: SkyScenery.Cartesian3.fromDegrees(
  76. 121.10708551540051,
  77. 31.14836073612525,
  78. 30000.0
  79. ), // 默认场景中心
  80. orientation: {
  81. heading: SkyScenery.Math.toRadians(0.0), // 方向
  82. pitch: SkyScenery.Math.toRadians(-90.0), // 倾斜角度
  83. roll: 0,
  84. },
  85. });
  86. this.$refs["controlPanel"].initDrawHandler();
  87. },
  88. },
  89. };
  90. </script>
  91. <style lang="less" scoped>
  92. .example {
  93. width: 100%;
  94. // height: calc(100vh - 120px);
  95. height: 100vh;
  96. position: relative;
  97. overflow: hidden;
  98. }
  99. #skysceneryContainer {
  100. width: 70vw;
  101. max-width: calc(100vw - 500px);
  102. height: 100%;
  103. }
  104. </style>