echartsBar.html 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title data-i18n="resources.title_GraphBar"></title>
  9. <script type="text/javascript" src="../js/include-web.js"></script>
  10. <script type="text/javascript" include="echarts" src="../../dist/ol/include-ol.js"></script>
  11. </head>
  12. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%; position: absolute;top: 0;">
  13. <div id="map" style="width: 100%;height:100%"></div>
  14. <div id="popup"></div>
  15. <script type="text/javascript">
  16. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  17. var resultLayer;
  18. var map = new ol.Map({
  19. target: 'map',
  20. controls: ol.control.defaults({attributionOptions: {collapsed: false}})
  21. .extend([new ol.supermap.control.Logo()]),
  22. view: new ol.View({
  23. center: [105.2, 31.6],
  24. zoom: 5,
  25. projection: 'EPSG:4326',
  26. multiWorld: true
  27. }),
  28. layers: [new ol.layer.Tile({
  29. source: new ol.source.TileSuperMapRest({
  30. url: host+"/iserver/services/map-world/rest/maps/World",
  31. }),
  32. projection: 'EPSG:4326'
  33. })]
  34. });
  35. var popup = new ol.Overlay({
  36. element: document.getElementById('popup'),
  37. offset: [5, 5]
  38. });
  39. map.addOverlay(popup);
  40. var option = {
  41. legend: {
  42. data: [resources.text_rainfall, resources.text_runoff],
  43. align: 'left'
  44. },
  45. toolbox: {
  46. feature: {
  47. magicType: {
  48. type: ['stack', 'tiled']
  49. },
  50. saveAsImage: {
  51. pixelRatio: 2
  52. }
  53. }
  54. },
  55. backgroundColor: '#fff',
  56. tooltip: {},
  57. xAxis: {
  58. data: [resources.text_monday, resources.text_tuesday, resources.text_wednesday, resources.text_thursday, resources.text_friday, resources.text_saturday, resources.text_sunday],
  59. silent: false,
  60. splitLine: {
  61. show: false
  62. }
  63. },
  64. yAxis: {},
  65. series: [{
  66. name: 'bar',
  67. type: 'bar',
  68. animationDelay: function (idx) {
  69. return idx * 10;
  70. }
  71. }, {
  72. name: 'bar2',
  73. type: 'bar',
  74. animationDelay: function (idx) {
  75. return idx * 10 + 100;
  76. }
  77. }],
  78. animationEasing: 'elasticOut',
  79. animationDelayUpdate: function (idx) {
  80. return idx * 5;
  81. }
  82. };
  83. var chart = echarts.init(document.createElement('div'), '', {
  84. width: 500,
  85. height: 300
  86. });
  87. chart.setOption(option);
  88. query();
  89. function query() {
  90. clearLayer();
  91. var queryService = new ol.supermap.QueryService(host+"/iserver/services/map-china400/rest/maps/China");
  92. var param = new SuperMap.QueryBySQLParameters({
  93. queryParams: [{
  94. name: "China_ProCenCity_pt@China",
  95. attributeFilter: "1 = 1"
  96. }, {
  97. name: "China_Capital_pt@China",
  98. attributeFilter: "1 = 1"
  99. }]
  100. });
  101. queryService.queryBySQL(param, function (serviceResult) {
  102. var features = [];
  103. for (var i = 0; i < serviceResult.result.recordsets.length; i++) {
  104. var temp = (new ol.format.GeoJSON()).readFeatures(serviceResult.result.recordsets[i].features, {
  105. dataProjection: 'EPSG:3857',
  106. featureProjection: 'EPSG:4326'
  107. });
  108. features = features.concat(temp);
  109. }
  110. resultLayer = new ol.layer.Vector({
  111. source: new ol.source.Vector({
  112. wrapX: false,
  113. features: features
  114. })
  115. });
  116. map.addLayer(resultLayer);
  117. var select = new ol.interaction.Select();
  118. map.addInteraction(select);
  119. select.on('select', function (e) {
  120. if (this.getFeatures().getLength() > 0) {
  121. var city = this.getFeatures().item(0).getProperties().NAME;
  122. var data1 = [];
  123. var data2 = [];
  124. for (var i = 0; i < 7; i++) {
  125. var data = Math.random().toFixed(2);
  126. data1.push(data);
  127. data2.push(data * (Math.random() + 1.5));
  128. }
  129. chart.setOption({
  130. title: {
  131. text: city,
  132. subtext: resources.text_fictitiouData
  133. },
  134. series: [
  135. {
  136. name: resources.text_rainfall,
  137. data: data1,
  138. },
  139. {
  140. name: resources.text_runoff,
  141. data: data2,
  142. }
  143. ],
  144. });
  145. popup.setElement(chart.getDom());
  146. var coordinate = e.mapBrowserEvent.coordinate;
  147. popup.setPosition(coordinate);
  148. } else {
  149. popup.setPosition(undefined);
  150. }
  151. });
  152. });
  153. }
  154. function clearLayer() {
  155. if (resultLayer) {
  156. map.removeLayer(resultLayer);
  157. }
  158. }
  159. </script>
  160. </body>
  161. </html>