Example.vue 3.4 KB

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