echarts-map.js 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. function loadMap() {
  2. var alaxGeoCoordMap = {
  3. '巴彦浩特镇': [105.70076900000004, 38.84741400000001],
  4. '巴彦诺日公苏木': [104.81555100000003, 40.164598],
  5. "超格图呼热苏木": [105.14156100000002, 38.049944],
  6. "额尔克哈什哈苏木": [103.710372, 38.302777],
  7. "吉兰泰镇": [105.76308300000005, 39.743072],
  8. "温都尔勒图镇": [104.30157800000006, 37.448355],
  9. "乌力吉苏木": [104.51224300000001, 40.744232],
  10. "银根苏木": [105.19668300000001, 40.838229],
  11. "宗别立镇": [106.20795799999996, 39.263541],
  12. "敖伦布拉格镇": [106.45298500000001, 40.531693],
  13. "巴润别立镇": [105.61228000000006, 38.533707]
  14. };
  15. var alaxDatas = [
  16. [{
  17. name: '巴彦诺日公苏木',
  18. value: 10
  19. }],
  20. [{
  21. name: '超格图呼热苏木',
  22. value: 100
  23. }],
  24. [{
  25. name: '额尔克哈什哈苏木',
  26. value: 140
  27. }],
  28. [{
  29. name: '吉兰泰镇',
  30. value: 180
  31. }],
  32. [{
  33. name: '温都尔勒图镇',
  34. value: 260
  35. }],
  36. [{
  37. name: '乌力吉苏木',
  38. value: 300
  39. }],
  40. [{
  41. name: '银根苏木',
  42. value: 10
  43. }],
  44. [{
  45. name: '宗别立镇',
  46. value: 50
  47. }],
  48. [{
  49. name: '敖伦布拉格镇',
  50. value: 220
  51. }],
  52. [{
  53. name: '巴润别立镇',
  54. value: 0
  55. }],
  56. ];
  57. var convertData = function (data) {
  58. var res = [];
  59. for (var i = 0; i < data.length; i++) {
  60. var dataItem = data[i];
  61. var fromCoord = alaxGeoCoordMap[dataItem[0].name];
  62. var toCoord = [105.70076900000004, 38.84741400000001];
  63. if (fromCoord && toCoord) {
  64. res.push([{
  65. fromName: dataItem[0].name,
  66. // toName: dataItem[1].name,
  67. coord: fromCoord,
  68. value: dataItem[0].value
  69. }, {
  70. coord: toCoord,
  71. }]);
  72. }
  73. }
  74. return res;
  75. };
  76. var series = [];
  77. [
  78. ['巴彦浩特镇', alaxDatas]
  79. ].forEach(function (item, i) {
  80. series.push({
  81. type: 'lines',
  82. zlevel: 2,
  83. effect: {
  84. show: true,
  85. period: 4, //箭头指向速度,值越小速度越快
  86. trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重
  87. symbol: 'arrow', //箭头图标
  88. symbolSize: 5, //图标大小
  89. },
  90. lineStyle: {
  91. normal: {
  92. width: 1, //尾迹线条宽度
  93. opacity: 1, //尾迹线条透明度
  94. curveness: .3 //尾迹线条曲直度
  95. }
  96. },
  97. data: convertData(item[1])
  98. }, {
  99. type: 'effectScatter',
  100. coordinateSystem: 'geo',
  101. zlevel: 2,
  102. rippleEffect: { //涟漪特效
  103. period: 4, //动画时间,值越小速度越快
  104. brushType: 'stroke', //波纹绘制方式 stroke, fill
  105. scale: 5 //波纹圆环最大限制,值越大波纹越大
  106. },
  107. label: {
  108. normal: {
  109. show: true,
  110. position: 'bottom', //显示位置
  111. offset: [0, 5], //偏移设置
  112. formatter: function (params) { //圆环显示文字
  113. return params.data.name;
  114. },
  115. fontSize: 14
  116. },
  117. emphasis: {
  118. show: true
  119. }
  120. },
  121. symbol: 'circle',
  122. symbolSize: function (val) {
  123. return 10; //圆环大小
  124. },
  125. itemStyle: {
  126. normal: {
  127. show: false,
  128. color: '#f00'
  129. }
  130. },
  131. data: item[1].map(function (dataItem) {
  132. return {
  133. name: dataItem[0].name,
  134. value: alaxGeoCoordMap[dataItem[0].name].concat([dataItem[0].value])
  135. };
  136. }),
  137. },
  138. // 汇聚点
  139. {
  140. type: 'scatter',
  141. coordinateSystem: 'geo',
  142. zlevel: 2,
  143. rippleEffect: {
  144. period: 4,
  145. brushType: 'stroke',
  146. scale: 4
  147. },
  148. label: {
  149. normal: {
  150. show: true,
  151. position: 'bottom',
  152. //offset:[5, 0],
  153. color: '#0f0',
  154. formatter: '{b}',
  155. textStyle: {
  156. color: "#0f0"
  157. }
  158. },
  159. emphasis: {
  160. show: true,
  161. color: "#f60"
  162. }
  163. },
  164. symbol: 'image://./img/icon-shield.png',
  165. symbolOffset: [0, '-50%'],
  166. symbolSize: 50,
  167. data: [{
  168. name: item[0],
  169. value: alaxGeoCoordMap[item[0]].concat([500]),
  170. }],
  171. }
  172. );
  173. });
  174. //获取地域分布数据
  175. const mapChart = echarts.init(document.getElementById("mapChart"), "shine");
  176. $.ajax({
  177. url: ajaxBaseUrl + "data/152900.json",
  178. dataType: "json",
  179. async: false,
  180. }).done(function (data) {
  181. echarts.registerMap(name, data);
  182. console.log(name)
  183. const mapChartOpt = {
  184. tooltip: {
  185. trigger: 'item',
  186. backgroundColor: 'rgba(166, 200, 76, 0.82)',
  187. borderColor: '#FFFFCC',
  188. showDelay: 0,
  189. hideDelay: 0,
  190. enterable: true,
  191. transitionDuration: 0,
  192. extraCssText: 'z-index:100',
  193. formatter: function (params, ticket, callback) {
  194. //根据业务自己拓展要显示的内容
  195. if (params.seriesType == "effectScatter") {
  196. var res = "";
  197. var name = params.name;
  198. var value = params.value[params.seriesIndex + 1];
  199. res = "<span style='color:#fff;'>" + name + "</span><br/>网格员数:" + value;
  200. return res;
  201. } else if (params.seriesType == "scatter") {
  202. var res = "";
  203. var name = params.name;
  204. var value = params.data.value[2];
  205. res = "<span style='color:#fff;'>" + name + "</span><br/>网格员数:" + value;
  206. return res;
  207. } else if (params.seriesType == "lines") {
  208. return "<span style='color:#fff;'>" + params.data.fromName + "</span><br />网格员数:" + params.data.value;
  209. } else {
  210. return name;
  211. }
  212. }
  213. },
  214. backgroundColor: "rgba(0, 0, 0, 0)",
  215. visualMap: { //图例值控制
  216. min: 0,
  217. max: 300,
  218. calculable: true,
  219. show: false,
  220. color: ['#f44336', '#fc9700', '#ffde00', '#ffde00', '#00eaff'],
  221. textStyle: {
  222. color: '#fff'
  223. }
  224. },
  225. geo: {
  226. type: "map",
  227. roam: false, //开启鼠标缩放和漫游
  228. zoom: 1.4, //地图缩放级别
  229. label: {
  230. emphasis: {
  231. show: true,
  232. color: "#fff",
  233. position: ['10%', '10%']
  234. }
  235. },
  236. itemStyle: {
  237. normal: {
  238. color: 'rgba(51, 69, 89, 0)', //地图背景色
  239. borderColor: 'rgba(81, 106, 137, .8)', //省市边界线00fcff 516a89
  240. borderWidth: 1
  241. },
  242. emphasis: {
  243. color: 'rgba(37, 43, 61, .5)' //悬浮背景
  244. }
  245. },
  246. center: [104.70076900000004, 39.24741400000001]
  247. // regions: [{
  248. // name: '阿拉善左旗',
  249. // itemStyle: {
  250. // areaColor: 'rgba(37, 43, 61, .5)',
  251. // color: 'red'
  252. // }
  253. // }]
  254. // selectedMode: "single",
  255. // top: 10,
  256. // bottom: 10,
  257. // layoutCenter: ["50%", "50%"],
  258. // //layoutSize: "100%", //保持地图宽高比
  259. },
  260. series: series
  261. };
  262. mapChart.setOption(mapChartOpt);
  263. }).fail(function (jqXHR) {
  264. console.log("Ajax Fail: ", jqXHR.status, jqXHR.statusText);
  265. });
  266. }