chartOptions.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. app.service("chartOptions", ['$rootScope', function ($rootScope) {
  2. var geoCoordMap = {
  3. '海门': [121.15, 31.89],
  4. '鄂尔多斯': [109.781327, 39.608266],
  5. '招远': [120.38, 37.35],
  6. '舟山': [122.207216, 29.985295],
  7. '齐齐哈尔': [123.97, 47.33],
  8. '盐城': [120.13, 33.38],
  9. '赤峰': [118.87, 42.28],
  10. '青岛': [120.33, 36.07],
  11. '乳山': [121.52, 36.89],
  12. '金昌': [102.188043, 38.520089],
  13. '泉州': [118.58, 24.93],
  14. '莱西': [120.53, 36.86],
  15. '日照': [119.46, 35.42],
  16. '胶南': [119.97, 35.88],
  17. '南通': [121.05, 32.08],
  18. '拉萨': [91.11, 29.97],
  19. '云浮': [112.02, 22.93],
  20. '梅州': [116.1, 24.55],
  21. '文登': [122.05, 37.2],
  22. '上海': [121.48, 31.22],
  23. '攀枝花': [101.718637, 26.582347],
  24. '威海': [122.1, 37.5],
  25. '承德': [117.93, 40.97],
  26. '厦门': [118.1, 24.46],
  27. '汕尾': [115.375279, 22.786211],
  28. '潮州': [116.63, 23.68],
  29. '丹东': [124.37, 40.13],
  30. '太仓': [121.1, 31.45],
  31. '曲靖': [103.79, 25.51],
  32. '烟台': [121.39, 37.52],
  33. '福州': [119.3, 26.08],
  34. '瓦房店': [121.979603, 39.627114],
  35. '即墨': [120.45, 36.38],
  36. '抚顺': [123.97, 41.97],
  37. '玉溪': [102.52, 24.35],
  38. '张家口': [114.87, 40.82],
  39. '阳泉': [113.57, 37.85],
  40. '莱州': [119.942327, 37.177017],
  41. '湖州': [120.1, 30.86],
  42. '汕头': [116.69, 23.39],
  43. '昆山': [120.95, 31.39],
  44. '宁波': [121.56, 29.86],
  45. '湛江': [110.359377, 21.270708],
  46. '揭阳': [116.35, 23.55],
  47. '荣成': [122.41, 37.16],
  48. '连云港': [119.16, 34.59],
  49. '葫芦岛': [120.836932, 40.711052],
  50. '常熟': [120.74, 31.64],
  51. '东莞': [113.75, 23.04],
  52. '河源': [114.68, 23.73],
  53. '淮安': [119.15, 33.5],
  54. '泰州': [119.9, 32.49],
  55. '南宁': [108.33, 22.84],
  56. '营口': [122.18, 40.65],
  57. '惠州': [114.4, 23.09],
  58. '江阴': [120.26, 31.91],
  59. '蓬莱': [120.75, 37.8],
  60. '韶关': [113.62, 24.84],
  61. '嘉峪关': [98.289152, 39.77313],
  62. '广州': [113.23, 23.16],
  63. '延安': [109.47, 36.6],
  64. '太原': [112.53, 37.87],
  65. '清远': [113.01, 23.7],
  66. '中山': [113.38, 22.52],
  67. '昆明': [102.73, 25.04],
  68. '寿光': [118.73, 36.86],
  69. '盘锦': [122.070714, 41.119997],
  70. '长治': [113.08, 36.18],
  71. '深圳': [114.07, 22.62],
  72. '珠海': [113.52, 22.3],
  73. '宿迁': [118.3, 33.96],
  74. '咸阳': [108.72, 34.36],
  75. '铜川': [109.11, 35.09],
  76. '平度': [119.97, 36.77],
  77. '佛山': [113.11, 23.05],
  78. '海口': [110.35, 20.02],
  79. '江门': [113.06, 22.61],
  80. '章丘': [117.53, 36.72],
  81. '肇庆': [112.44, 23.05],
  82. '大连': [121.62, 38.92],
  83. '临汾': [111.5, 36.08],
  84. '吴江': [120.63, 31.16],
  85. '石嘴山': [106.39, 39.04],
  86. '沈阳': [123.38, 41.8],
  87. '苏州': [120.62, 31.32],
  88. '茂名': [110.88, 21.68],
  89. '嘉兴': [120.76, 30.77],
  90. '长春': [125.35, 43.88],
  91. '胶州': [120.03336, 36.264622],
  92. '银川': [106.27, 38.47],
  93. '张家港': [120.555821, 31.875428],
  94. '三门峡': [111.19, 34.76],
  95. '锦州': [121.15, 41.13],
  96. '南昌': [115.89, 28.68],
  97. '柳州': [109.4, 24.33],
  98. '三亚': [109.511909, 18.252847],
  99. '自贡': [104.778442, 29.33903],
  100. '吉林': [126.57, 43.87],
  101. '阳江': [111.95, 21.85],
  102. '泸州': [105.39, 28.91],
  103. '西宁': [101.74, 36.56],
  104. '宜宾': [104.56, 29.77],
  105. '呼和浩特': [111.65, 40.82],
  106. '成都': [104.06, 30.67],
  107. '大同': [113.3, 40.12],
  108. '镇江': [119.44, 32.2],
  109. '桂林': [110.28, 25.29],
  110. '张家界': [110.479191, 29.117096],
  111. '宜兴': [119.82, 31.36],
  112. '北海': [109.12, 21.49],
  113. '西安': [108.95, 34.27],
  114. '金坛': [119.56, 31.74],
  115. '东营': [118.49, 37.46],
  116. '牡丹江': [129.58, 44.6],
  117. '遵义': [106.9, 27.7],
  118. '绍兴': [120.58, 30.01],
  119. '扬州': [119.42, 32.39],
  120. '常州': [119.95, 31.79],
  121. '潍坊': [119.1, 36.62],
  122. '重庆': [106.54, 29.59],
  123. '台州': [121.420757, 28.656386],
  124. '南京': [118.78, 32.04],
  125. '滨州': [118.03, 37.36],
  126. '贵阳': [106.71, 26.57],
  127. '无锡': [120.29, 31.59],
  128. '本溪': [123.73, 41.3],
  129. '克拉玛依': [84.77, 45.59],
  130. '渭南': [109.5, 34.52],
  131. '马鞍山': [118.48, 31.56],
  132. '宝鸡': [107.15, 34.38],
  133. '焦作': [113.21, 35.24],
  134. '句容': [119.16, 31.95],
  135. '北京': [116.46, 39.92],
  136. '徐州': [117.2, 34.26],
  137. '衡水': [115.72, 37.72],
  138. '包头': [110, 40.58],
  139. '绵阳': [104.73, 31.48],
  140. '乌鲁木齐': [87.68, 43.77],
  141. '枣庄': [117.57, 34.86],
  142. '杭州': [120.19, 30.26],
  143. '淄博': [118.05, 36.78],
  144. '鞍山': [122.85, 41.12],
  145. '溧阳': [119.48, 31.43],
  146. '库尔勒': [86.06, 41.68],
  147. '安阳': [114.35, 36.1],
  148. '开封': [114.35, 34.79],
  149. '济南': [117, 36.65],
  150. '德阳': [104.37, 31.13],
  151. '温州': [120.65, 28.01],
  152. '九江': [115.97, 29.71],
  153. '邯郸': [114.47, 36.6],
  154. '临安': [119.72, 30.23],
  155. '兰州': [103.73, 36.03],
  156. '沧州': [116.83, 38.33],
  157. '临沂': [118.35, 35.05],
  158. '南充': [106.110698, 30.837793],
  159. '天津': [117.2, 39.13],
  160. '富阳': [119.95, 30.07],
  161. '泰安': [117.13, 36.18],
  162. '诸暨': [120.23, 29.71],
  163. '郑州': [113.65, 34.76],
  164. '哈尔滨': [126.63, 45.75],
  165. '聊城': [115.97, 36.45],
  166. '芜湖': [118.38, 31.33],
  167. '唐山': [118.02, 39.63],
  168. '平顶山': [113.29, 33.75],
  169. '邢台': [114.48, 37.05],
  170. '德州': [116.29, 37.45],
  171. '济宁': [116.59, 35.38],
  172. '荆州': [112.239741, 30.335165],
  173. '宜昌': [111.3, 30.7],
  174. '义乌': [120.06, 29.32],
  175. '丽水': [119.92, 28.45],
  176. '洛阳': [112.44, 34.7],
  177. '秦皇岛': [119.57, 39.95],
  178. '株洲': [113.16, 27.83],
  179. '石家庄': [114.48, 38.03],
  180. '莱芜': [117.67, 36.19],
  181. '常德': [111.69, 29.05],
  182. '保定': [115.48, 38.85],
  183. '湘潭': [112.91, 27.87],
  184. '金华': [119.64, 29.12],
  185. '岳阳': [113.09, 29.37],
  186. '长沙': [113, 28.21],
  187. '衢州': [118.88, 28.97],
  188. '廊坊': [116.7, 39.53],
  189. '菏泽': [115.480656, 35.23375],
  190. '合肥': [117.27, 31.86],
  191. '武汉': [114.31, 30.52],
  192. '大庆': [125.03, 46.58]
  193. };
  194. var convertData = function (geoCoordMap, data) {
  195. var res = [];
  196. for (var i = 0; i < data.length; i++) {
  197. var geoCoord = geoCoordMap[data[i].name];
  198. if (geoCoord) {
  199. res.push({
  200. name: data[i].name,
  201. value: geoCoord.concat(data[i].value)
  202. });
  203. }
  204. }
  205. return res;
  206. };
  207. function getMapOption(data) {
  208. var list = data.dataList;
  209. var mapOption = {
  210. tooltip: {
  211. trigger: 'item',
  212. formatter: function (data) {
  213. var info = data.seriesName + "<br>" + data.name + ":" + data.value[2] + "台";
  214. return info;
  215. }
  216. },
  217. bmap: {
  218. center: [104.114129, 37.550339],
  219. zoom: 5,
  220. roam: true,
  221. map: "china",
  222. mapType: "china",
  223. mapStyle: {
  224. styleJson: [
  225. {
  226. "featureType": "water",
  227. "elementType": "all",
  228. "stylers": {
  229. "color": "#044161"
  230. }
  231. },
  232. {
  233. "featureType": "land",
  234. "elementType": "all",
  235. "stylers": {
  236. "color": "#004981"
  237. }
  238. },
  239. {
  240. "featureType": "boundary",
  241. "elementType": "geometry",
  242. "stylers": {
  243. "color": "#064f85"
  244. }
  245. },
  246. {
  247. "featureType": "railway",
  248. "elementType": "all",
  249. "stylers": {
  250. "visibility": "off"
  251. }
  252. },
  253. {
  254. "featureType": "highway",
  255. "elementType": "geometry",
  256. "stylers": {
  257. "color": "#004981"
  258. }
  259. },
  260. {
  261. "featureType": "highway",
  262. "elementType": "geometry.fill",
  263. "stylers": {
  264. "color": "#005b96",
  265. "lightness": 1
  266. }
  267. },
  268. {
  269. "featureType": "highway",
  270. "elementType": "labels",
  271. "stylers": {
  272. "visibility": "off"
  273. }
  274. },
  275. {
  276. "featureType": "arterial",
  277. "elementType": "geometry",
  278. "stylers": {
  279. "color": "#004981"
  280. }
  281. },
  282. {
  283. "featureType": "arterial",
  284. "elementType": "geometry.fill",
  285. "stylers": {
  286. "color": "#00508b"
  287. }
  288. },
  289. {
  290. "featureType": "poi",
  291. "elementType": "all",
  292. "stylers": {
  293. "visibility": "off"
  294. }
  295. },
  296. {
  297. "featureType": "green",
  298. "elementType": "all",
  299. "stylers": {
  300. "color": "#056197",
  301. "visibility": "off"
  302. }
  303. },
  304. {
  305. "featureType": "subway",
  306. "elementType": "all",
  307. "stylers": {
  308. "visibility": "off"
  309. }
  310. },
  311. {
  312. "featureType": "manmade",
  313. "elementType": "all",
  314. "stylers": {
  315. "visibility": "off"
  316. }
  317. },
  318. {
  319. "featureType": "local",
  320. "elementType": "all",
  321. "stylers": {
  322. "visibility": "off"
  323. }
  324. },
  325. {
  326. "featureType": "arterial",
  327. "elementType": "labels",
  328. "stylers": {
  329. "visibility": "off"
  330. }
  331. },
  332. {
  333. "featureType": "boundary",
  334. "elementType": "geometry.fill",
  335. "stylers": {
  336. "color": "#029fd4"
  337. }
  338. },
  339. {
  340. "featureType": "building",
  341. "elementType": "all",
  342. "stylers": {
  343. "color": "#1a5787"
  344. }
  345. },
  346. {
  347. "featureType": "label",
  348. "elementType": "all",
  349. "stylers": {
  350. "visibility": "off"
  351. }
  352. }
  353. ]
  354. }
  355. },
  356. series: [
  357. {
  358. name: '设备',
  359. type: 'scatter',
  360. coordinateSystem: 'bmap',
  361. data: convertData(geoCoordMap, list),
  362. symbolSize: function (val) {
  363. return val[2] / 10;
  364. },
  365. label: {
  366. normal: {
  367. formatter: '{b}',
  368. position: 'right',
  369. show: false
  370. },
  371. emphasis: {
  372. show: true
  373. }
  374. },
  375. itemStyle: {
  376. normal: {
  377. color: '#27c24c'
  378. }
  379. }
  380. },
  381. {
  382. name: 'Top 5',
  383. type: 'effectScatter',
  384. coordinateSystem: 'bmap',
  385. data: convertData(geoCoordMap, list.sort(function (a, b) {
  386. return b.value - a.value;
  387. }).slice(0, 6)),
  388. symbolSize: function (val) {
  389. return val[2] / 10;
  390. },
  391. showEffectOn: 'render',// render为动画效果,emphasis为高亮
  392. rippleEffect: {
  393. brushType: 'stroke'
  394. },
  395. hoverAnimation: true,
  396. label: {
  397. normal: {
  398. formatter: '{b}',
  399. position: 'right',
  400. show: true
  401. }
  402. },
  403. itemStyle: {
  404. normal: {
  405. color: '#f4e925',
  406. shadowBlur: 10,
  407. shadowColor: '#333'
  408. }
  409. },
  410. zlevel: 1
  411. }
  412. ]
  413. };
  414. return mapOption;
  415. }
  416. function getLineOptions(xData) {
  417. var option = {
  418. tooltip: {},
  419. grid: {
  420. x: 40, x2: 40, y: 32
  421. },
  422. xAxis: {
  423. boundaryGap: false,
  424. axisLine: {
  425. lineStyle: {
  426. color: "#f4f4f4"
  427. }
  428. },
  429. splitLine: {
  430. lineStyle: {
  431. color: "#f4f4f4"
  432. }
  433. },
  434. axisLabel: {
  435. textStyle: {
  436. color: "#aaa"
  437. }
  438. },
  439. data: xData
  440. },
  441. yAxis: {
  442. axisLine: {
  443. lineStyle: {
  444. color: "#f4f4f4"
  445. }
  446. },
  447. splitLine: {
  448. lineStyle: {
  449. color: "#f4f4f4"
  450. },
  451. },
  452. axisLabel: {
  453. textStyle: {
  454. color: "#aaa"
  455. }
  456. },
  457. },
  458. dataZoom: [
  459. {
  460. show: true,
  461. realtime: true,
  462. start: 0,
  463. end: 100
  464. },
  465. {
  466. type: 'inside',
  467. realtime: true,
  468. start: 0,
  469. end: 100
  470. }
  471. ],
  472. };
  473. return option;
  474. }
  475. return {
  476. getLineOptions: getLineOptions,
  477. getMapOption: getMapOption
  478. };
  479. }]);