others_dataWebGL.html 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  8. <title>WebGL Globe</title>
  9. <style type="text/css">
  10. .editPane {
  11. position: absolute;
  12. right: 60px;
  13. top: 50px;
  14. text-align: center;
  15. background: #FFF;
  16. z-index: 1000;
  17. }
  18. </style>
  19. </head>
  20. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  21. <div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
  22. <div class='panel-heading'>
  23. <h5 class='panel-title text-center'>WebGL Globe</h5>
  24. </div>
  25. <div class='panel-body' id='params'>
  26. <p></p>
  27. <div align='center' class='button-group'>
  28. <input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.text_input_value_addData" onclick="loadData()"/>
  29. </div>
  30. </div>
  31. </div>
  32. <div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
  33. <script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
  34. <script type="text/javascript" exclude="iclient-classic" include="three" src="../../dist/classic/include-classic.js"></script>
  35. <script type="text/javascript">
  36. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  37. /**
  38. * 脚本引用说明:该三维球的效果使用的是第三方的脚本库,脚本位置在js/third-party
  39. * ThreeWebGL.js、ThreeExtras.js、RequestAnimationFrame.js、Detector.js、globe.js
  40. * 可以参考资源:https://github.com/climboid/webgl-globe
  41. */
  42. //定义全局globe变量
  43. var globe = null, url = host + "/iserver/services/map-world/rest/maps/World";
  44. function init() {
  45. if (!document.createElement('canvas').getContext) {
  46. widgets.alert.showAlert(resources.msg_supportCanvas, false);
  47. return;
  48. }
  49. //使用globe.js文件创建三维球模型,并指定装载地球的div
  50. globe = DAT.Globe(document.getElementById('map'));
  51. globe.animate();
  52. }
  53. $(document).ready(function () {
  54. init();
  55. });
  56. function loadData() {
  57. //通过SQL查询返回需要的数据
  58. var queryParam, queryBySQLParams, queryBySQLService;
  59. queryParam = new SuperMap.REST.FilterParameter({
  60. name: "Capitals@World#1"
  61. });
  62. queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({
  63. queryParams: [queryParam]
  64. });
  65. queryBySQLService = new SuperMap.REST.QueryBySQLService(url, {
  66. eventListeners: {
  67. "processCompleted": processCompleted,
  68. "processFailed": processFailed
  69. }
  70. });
  71. queryBySQLService.processAsync(queryBySQLParams);
  72. }
  73. function processCompleted(queryEventArgs) {
  74. var result = queryEventArgs.result.recordsets[0].features;
  75. //创建dataArr数组,用来组成WebGL Globe所需要的数据格式
  76. var dataArr = [];
  77. for (var item in result) {
  78. dataArr.push(result[item].geometry.y);
  79. dataArr.push(result[item].geometry.x);
  80. dataArr.push(result[item].data.CAP_POP / 100000000);
  81. }
  82. //为三维球装载数据并展示
  83. globe.addData(dataArr, {format: 'magnitude'});
  84. globe.createPoints();
  85. }
  86. function processFailed() {
  87. //查询失败后在控制台输出错误信息
  88. console.log(resources.msg_querySQLFailed);
  89. }
  90. </script>
  91. </body>
  92. </html>