echartsPie.html 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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_GraphPie"></title>
  9. <script type="text/javascript" src="../js/include-web.js"></script>
  10. </head>
  11. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  12. <div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
  13. <script type="text/javascript" include="echarts" src="../../dist/leaflet/include-leaflet.js"></script>
  14. <script type="text/javascript">
  15. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  16. var map, resultLayer, url = host + "/iserver/services/map-world/rest/maps/世界地图_Gray";
  17. var url2 = host + "/iserver/services/map-china400/rest/maps/China";
  18. map = L.map('map', {
  19. crs: L.CRS.EPSG4326,
  20. center: [39.905, 116.402],
  21. maxZoom: 18,
  22. zoom: 5
  23. });
  24. L.supermap.tiledMapLayer(url).addTo(map);
  25. var commodity = [
  26. resources.text_commodity + "A",
  27. resources.text_commodity + "B",
  28. resources.text_commodity + "C",
  29. resources.text_commodity + "D",
  30. resources.text_commodity + "E",
  31. resources.text_commodity + "F"
  32. ];
  33. var textClass = [
  34. resources.text_class + "A",
  35. resources.text_class + "B",
  36. resources.text_class + "C"
  37. ];
  38. var categoryDataMap = {
  39. "北京市": [
  40. {value: 335, name: textClass[0]},
  41. {value: 679, name: textClass[1]},
  42. {value: 1299, name: textClass[2]}
  43. ],
  44. "广州市": [
  45. {value: 117, name: textClass[0]},
  46. {value: 1267, name: textClass[1]},
  47. {value: 1048, name: textClass[2]}
  48. ], "上海市": [
  49. {value: 475, name: textClass[0]},
  50. {value: 1450, name:textClass[1]},
  51. {value: 875, name:textClass[2]}
  52. ]
  53. };
  54. var dataMap = {
  55. "北京市": [
  56. {value: 335, name:commodity[0]},
  57. {value: 310, name:commodity[1]},
  58. {value: 234, name:commodity[2]},
  59. {value: 135, name:commodity[3]},
  60. {value: 1048,name:commodity[4]},
  61. {value: 251, name:commodity[5]}
  62. ],
  63. "广州市": [
  64. {value: 117, name: commodity[0]},
  65. {value: 284, name:commodity[1]},
  66. {value: 768, name: commodity[2]},
  67. {value: 215, name:commodity[3]},
  68. {value: 901, name: commodity[4]},
  69. {value: 148, name: commodity[5]}
  70. ], "上海市": [
  71. {value: 475, name: commodity[0]},
  72. {value: 29, name: commodity[1]},
  73. {value: 430, name: commodity[2]},
  74. {value: 981, name:commodity[3]},
  75. {value: 732, name:commodity[4]},
  76. {value: 143, name:commodity[5]}
  77. ]
  78. };
  79. var option = {
  80. title: {
  81. text: resources.text_beijingCommoditySales,
  82. subtext: resources.text_fictitiou,
  83. textStyle: {
  84. color: '#fff',
  85. fontSize: 16
  86. }
  87. },
  88. backgroundColor: '#404a59',
  89. tooltip: {
  90. trigger: 'item',
  91. formatter: "{a} <br/>{b}: {c} ({d}%)"
  92. },
  93. legend: {
  94. orient: 'vertical',
  95. x: 'right',
  96. y: 'bottom',
  97. textStyle: {
  98. color: '#fff',
  99. fontSize: 12
  100. },
  101. data:commodity
  102. },
  103. series: [
  104. {
  105. name: resources.text_commodityClass,
  106. type: 'pie',
  107. selectedMode: 'single',
  108. radius: [0, '30%'],
  109. label: {
  110. normal: {
  111. position: 'inner'
  112. }
  113. },
  114. labelLine: {
  115. normal: {
  116. show: false
  117. }
  118. },
  119. data: categoryDataMap['北京市']
  120. },
  121. {
  122. name: resources.text_commodity,
  123. type: 'pie',
  124. radius: ['40%', '55%'],
  125. data: dataMap['北京市']
  126. }
  127. ]
  128. };
  129. var div = L.DomUtil.create('div');
  130. var chart = echarts.init(div, '', {
  131. width: 500,
  132. height: 300
  133. });
  134. chart.setOption(option);
  135. var control = L.control({position: 'topright'});
  136. control.onAdd = function (map) {
  137. return chart.getDom();
  138. };
  139. control.addTo(map);
  140. query();
  141. function query() {
  142. clearLayer();
  143. var param = new SuperMap.QueryBySQLParameters({
  144. queryParams: [{
  145. name: "China_ProCenCity_pt@China",
  146. attributeFilter: "NAME = '广州市' or NAME = '上海市'"
  147. }, {
  148. name: "China_Capital_pt@China",
  149. attributeFilter: "NAME = '北京市'"
  150. }]
  151. });
  152. L.supermap
  153. .queryService(url2)
  154. .queryBySQL(param, function (serviceResult) {
  155. serviceResult.result.recordsets.map(function (record) {
  156. resultLayer = L.geoJSON(record.features, {
  157. coordsToLatLng: function (coords) {
  158. var latlng = L.CRS.EPSG3857.unproject(L.point(coords[0], coords[1]));
  159. latlng.alt = coords[2];
  160. return latlng;
  161. }
  162. }).on('click', function (e) {
  163. var city = e.layer.feature.properties.NAME;
  164. chart.setOption({
  165. title: {
  166. text: city + resources.text_commoditySales
  167. },
  168. series: [
  169. {
  170. name: resources.text_commodityClass,
  171. data: categoryDataMap[city]
  172. },
  173. {
  174. name: resources.text_commodity,
  175. data: dataMap[city]
  176. }
  177. ]
  178. });
  179. map.panTo(e.latlng);
  180. }, {maxWidth: 700}).addTo(map);
  181. })
  182. });
  183. }
  184. function clearLayer() {
  185. if (resultLayer) {
  186. resultLayer.removeFrom(map);
  187. }
  188. }
  189. L.DomEvent
  190. .on(div, 'mouseover', function () {
  191. map.dragging.disable();
  192. map.scrollWheelZoom.disable();
  193. map.doubleClickZoom.disable();
  194. })
  195. .on(div, 'mouseout', function () {
  196. map.dragging.enable();
  197. map.scrollWheelZoom.enable();
  198. map.doubleClickZoom.enable();
  199. })
  200. </script>
  201. </body>
  202. </html>