Example.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. // window.loadScripts([systemConfig.scriptMain]).then(() => {
  27. // this.creatMap();
  28. // });
  29. },
  30. methods: {
  31. creatMap() {
  32. window.viewer = new SkyScenery.Viewer("skysceneryContainer", {
  33. animation: false, //是否创建动画小器件,左下角仪表
  34. baseLayerPicker: false, //是否显示图层选择器
  35. imageryProvider: new SkyScenery.SingleTileImageryProvider({
  36. url: (function createColorCanvas(color) {
  37. var width = 1,
  38. height = 1;
  39. var canvas = document.createElement("canvas");
  40. canvas.width = width;
  41. canvas.height = height;
  42. var ctx = canvas.getContext("2d");
  43. ctx.fillStyle = color;
  44. ctx.fillRect(0, 0, width, height);
  45. return canvas.toDataURL();
  46. })("#ffffff00"),
  47. rectangle: SkyScenery.Rectangle.fromDegrees(-180.0, -90.0, 180.0, 90.0),
  48. }),
  49. fullscreenButton: false, //是否显示全屏按钮
  50. geocoder: false, //是否显示geocoder小器件,右上角查询按钮
  51. homeButton: false, //是否显示Home按钮
  52. infoBox: false, //是否显示信息框
  53. sceneModePicker: false, //是否显示3D/2D选择器
  54. selectionIndicator: false, //是否显示选取指示器组件
  55. timeline: false, //是否显示时间轴
  56. navigationHelpButton: false, //是否显示右上角的帮助按钮
  57. scene3DOnly: true, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
  58. shouldAnimate: false, //是否自动播放
  59. // 性能优化配置
  60. requestRenderMode: true,
  61. maximumRenderTimeChange: Infinity,
  62. preserveDrawingBuffer: false,
  63. useBrowserRecommendedResolution: true,
  64. });
  65. // 添加地图服务
  66. viewer.imageryLayers.addImageryProvider(
  67. new SkyScenery.CGCS2000ArcGisMapServerImageryProvider({
  68. url: systemConfig.wgn.layerUrl + SkySceneryConfig.token,
  69. // enablePickFeatures: false, // 禁用要素拾取功能以提高性能
  70. })
  71. );
  72. // 定位
  73. viewer.camera.setView({
  74. destination: SkyScenery.Cartesian3.fromDegrees(
  75. 121.10708551540051,
  76. 31.14836073612525,
  77. 30000.0
  78. ), // 默认场景中心
  79. orientation: {
  80. heading: SkyScenery.Math.toRadians(0.0), // 方向
  81. pitch: SkyScenery.Math.toRadians(-90.0), // 倾斜角度
  82. roll: 0,
  83. },
  84. });
  85. this.$refs["controlPanel"].initDrawHandler();
  86. },
  87. },
  88. };
  89. </script>
  90. <style lang="less" scoped>
  91. .example {
  92. width: 100%;
  93. // height: calc(100vh - 120px);
  94. height: 100vh;
  95. position: relative;
  96. overflow: hidden;
  97. }
  98. #skysceneryContainer {
  99. width: 70vw;
  100. max-width: calc(100vw - 500px);
  101. height: 100%;
  102. }
  103. </style>