You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

e_qx.html 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1.0">
  6. <title>dc-example</title>
  7. <script src='https://cdn.jsdelivr.net/npm/echarts@5.4.2/dist/echarts.min.js'></script>
  8. <script src='/libs/dc-sdk/dc.base.min.js'></script>
  9. <script src='/libs/dc-sdk/dc.core.min.js'></script>
  10. <script src='/libs/dc-sdk/dc.chart.min.js'></script>
  11. <script>DC.baseUrl='../libs/dc-sdk/resources/'</script>
  12. <link href='/libs/dc-sdk/dc.core.min.css' type='text/css' rel='stylesheet'>
  13. <link href='../index.css' type='text/css' rel='stylesheet'>
  14. <style>
  15. *{
  16. margin: 0;
  17. padding: 0;
  18. }
  19. html,body,#viewer-container{
  20. width: 100%;
  21. height: 100%;
  22. overflow: hidden;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div id="viewer-container" class="viewer-container"></div>
  28. <script>
  29. let viewer = undefined
  30. function initViewer() {
  31. viewer = new DC.Viewer('viewer-container')
  32. let baseLayer = DC.ImageryLayerFactory.createAmapImageryLayer()
  33. baseLayer.defaultBrightness = 0.1
  34. viewer.addBaseLayer( baseLayer)
  35. viewer.flyToPosition(
  36. new DC.Position(108.198353, 20.758452, 10733735.96, 0, -90, 0),
  37. () => {
  38. let chartLayer = new DC.ChartLayer('layer').addTo(viewer)
  39. chartLayer.setOption(getOption())
  40. }
  41. )
  42. }
  43. function getOption(e) {
  44. var geoCoordMap = {
  45. 新疆玛纳斯基地: [86.22, 44.3],
  46. 九江: [116.0, 29.7],
  47. 新乡: [116.402217, 35.311657],
  48. ' ': [79.92, 37.12],
  49. ' ': [86.85, 47.7],
  50. 若羌县: [88.17, 39.02],
  51. 上海: [121.4648, 31.2891],
  52. 东莞: [113.8953, 22.901],
  53. 东营: [118.7073, 37.5513],
  54. 中山: [113.4229, 22.478],
  55. 临汾: [111.4783, 36.1615],
  56. 临沂: [118.3118, 35.2936],
  57. 丹东: [124.541, 40.4242],
  58. 丽水: [119.5642, 28.1854],
  59. 乌鲁木齐: [87.9236, 43.5883],
  60. 佛山: [112.8955, 23.1097],
  61. 保定: [115.0488, 39.0948],
  62. 兰州: [103.5901, 36.3043],
  63. 包头: [110.3467, 41.4899],
  64. 北京: [116.4551, 40.2539],
  65. 北海: [109.314, 21.6211],
  66. 南京: [118.8062, 31.9208],
  67. 南宁: [108.479, 23.1152],
  68. 南昌: [116.0046, 28.6633],
  69. 南通: [121.1023, 32.1625],
  70. 厦门: [118.1689, 24.6478],
  71. 台州: [121.1353, 28.6688],
  72. 合肥: [117.29, 32.0581],
  73. 呼和浩特: [111.4124, 40.4901],
  74. 咸阳: [108.4131, 34.8706],
  75. 哈尔滨: [127.9688, 45.368],
  76. 唐山: [118.4766, 39.6826],
  77. 嘉兴: [120.9155, 30.6354],
  78. 大同: [113.7854, 39.8035],
  79. 大连: [122.2229, 39.4409],
  80. 天津: [117.4219, 39.4189],
  81. 太原: [112.3352, 37.9413],
  82. 威海: [121.9482, 37.1393],
  83. 宁波: [121.5967, 29.6466],
  84. 宝鸡: [107.1826, 34.3433],
  85. 宿迁: [118.5535, 33.7775],
  86. 常州: [119.4543, 31.5582],
  87. 广州: [113.5107, 23.2196],
  88. 廊坊: [116.521, 39.0509],
  89. 延安: [109.1052, 36.4252],
  90. 张家口: [115.1477, 40.8527],
  91. 徐州: [117.5208, 34.3268],
  92. 德州: [116.6858, 37.2107],
  93. 惠州: [114.6204, 23.1647],
  94. 成都: [103.9526, 30.7617],
  95. 扬州: [119.4653, 32.8162],
  96. 承德: [117.5757, 41.4075],
  97. 拉萨: [91.1865, 30.1465],
  98. 无锡: [120.3442, 31.5527],
  99. 日照: [119.2786, 35.5023],
  100. 昆明: [102.9199, 25.4663],
  101. 杭州: [119.5313, 29.8773],
  102. 枣庄: [117.323, 34.8926],
  103. 柳州: [109.3799, 24.9774],
  104. 株洲: [113.5327, 27.0319],
  105. 武汉: [114.3896, 30.6628],
  106. 汕头: [117.1692, 23.3405],
  107. 江门: [112.6318, 22.1484],
  108. 沈阳: [123.1238, 42.1216],
  109. 沧州: [116.8286, 38.2104],
  110. 河源: [114.917, 23.9722],
  111. 泉州: [118.3228, 25.1147],
  112. 泰安: [117.0264, 36.0516],
  113. 泰州: [120.0586, 32.5525],
  114. 济南: [117.1582, 36.8701],
  115. 济宁: [116.8286, 35.3375],
  116. 海口: [110.3893, 19.8516],
  117. 淄博: [118.0371, 36.6064],
  118. 淮安: [118.927, 33.4039],
  119. 深圳: [114.5435, 22.5439],
  120. 清远: [112.9175, 24.3292],
  121. 温州: [120.498, 27.8119],
  122. 渭南: [109.7864, 35.0299],
  123. 湖州: [119.8608, 30.7782],
  124. 湘潭: [112.5439, 27.7075],
  125. 滨州: [117.8174, 37.4963],
  126. 潍坊: [119.0918, 36.524],
  127. 烟台: [120.7397, 37.5128],
  128. 玉溪: [101.9312, 23.8898],
  129. 珠海: [113.7305, 22.1155],
  130. 盐城: [120.2234, 33.5577],
  131. 盘锦: [121.9482, 41.0449],
  132. 石家庄: [114.4995, 38.1006],
  133. 福州: [119.4543, 25.9222],
  134. 秦皇岛: [119.2126, 40.0232],
  135. 绍兴: [120.564, 29.7565],
  136. 聊城: [115.9167, 36.4032],
  137. 肇庆: [112.1265, 23.5822],
  138. 舟山: [122.2559, 30.2234],
  139. 苏州: [120.6519, 31.3989],
  140. 莱芜: [117.6526, 36.2714],
  141. 菏泽: [115.6201, 35.2057],
  142. 营口: [122.4316, 40.4297],
  143. 葫芦岛: [120.1575, 40.578],
  144. 衡水: [115.8838, 37.7161],
  145. 衢州: [118.6853, 28.8666],
  146. 西宁: [101.4038, 36.8207],
  147. 西安: [109.1162, 34.2004],
  148. 贵阳: [106.6992, 26.7682],
  149. 连云港: [119.1248, 34.552],
  150. 邢台: [114.8071, 37.2821],
  151. 邯郸: [114.4775, 36.535],
  152. 郑州: [113.4668, 34.6234],
  153. 鄂尔多斯: [108.9734, 39.2487],
  154. 重庆: [107.7539, 30.1904],
  155. 金华: [120.0037, 29.1028],
  156. 铜川: [109.0393, 35.1947],
  157. 银川: [106.3586, 38.1775],
  158. 镇江: [119.4763, 31.9702],
  159. 长春: [125.8154, 44.2584],
  160. 长沙: [113.0823, 28.2568],
  161. 长治: [112.8625, 36.4746],
  162. 阳泉: [113.4778, 38.0951],
  163. 青岛: [120.4651, 36.3373],
  164. 韶关: [113.7964, 24.7028]
  165. }
  166. var BJData = [
  167. [
  168. {
  169. name: '新乡'
  170. },
  171. {
  172. name: '新乡',
  173. value: 200
  174. }
  175. ],
  176. [
  177. {
  178. name: '新乡'
  179. },
  180. {
  181. name: '呼和浩特',
  182. value: 90
  183. }
  184. ],
  185. [
  186. {
  187. name: '新乡'
  188. },
  189. {
  190. name: '哈尔滨',
  191. value: 90
  192. }
  193. ],
  194. [
  195. {
  196. name: '新乡'
  197. },
  198. {
  199. name: '石家庄',
  200. value: 90
  201. }
  202. ],
  203. [
  204. {
  205. name: '新乡'
  206. },
  207. {
  208. name: '昆明',
  209. value: 30
  210. }
  211. ],
  212. [
  213. {
  214. name: '新乡'
  215. },
  216. {
  217. name: '北京',
  218. value: 100
  219. }
  220. ],
  221. [
  222. {
  223. name: '新乡'
  224. },
  225. {
  226. name: '长春',
  227. value: 40
  228. }
  229. ],
  230. [
  231. {
  232. name: '新乡'
  233. },
  234. {
  235. name: '重庆',
  236. value: 40
  237. }
  238. ],
  239. [
  240. {
  241. name: '新乡'
  242. },
  243. {
  244. name: '贵阳',
  245. value: 50
  246. }
  247. ],
  248. [
  249. {
  250. name: '新乡'
  251. },
  252. {
  253. name: '南宁',
  254. value: 30
  255. }
  256. ],
  257. [
  258. {
  259. name: '新乡'
  260. },
  261. {
  262. name: '济南',
  263. value: 10
  264. }
  265. ],
  266. [
  267. {
  268. name: '新乡'
  269. },
  270. {
  271. name: '太原',
  272. value: 40
  273. }
  274. ],
  275. [
  276. {
  277. name: '新乡'
  278. },
  279. {
  280. name: '西安',
  281. value: 60
  282. }
  283. ],
  284. [
  285. {
  286. name: '新乡'
  287. },
  288. {
  289. name: '武汉',
  290. value: 50
  291. }
  292. ],
  293. [
  294. {
  295. name: '新乡'
  296. },
  297. {
  298. name: '合肥',
  299. value: 40
  300. }
  301. ],
  302. [
  303. {
  304. name: '新乡'
  305. },
  306. {
  307. name: '南京',
  308. value: 30
  309. }
  310. ],
  311. [
  312. {
  313. name: '新乡'
  314. },
  315. {
  316. name: '沈阳',
  317. value: 20
  318. }
  319. ],
  320. [
  321. {
  322. name: '新乡'
  323. },
  324. {
  325. name: '成都',
  326. value: 10
  327. }
  328. ]
  329. ]
  330. var SHData = [
  331. [
  332. {
  333. name: '九江'
  334. },
  335. {
  336. name: '九江',
  337. value: 200
  338. }
  339. ],
  340. [
  341. {
  342. name: '九江'
  343. },
  344. {
  345. name: '长沙',
  346. value: 95
  347. }
  348. ],
  349. [
  350. {
  351. name: '九江'
  352. },
  353. {
  354. name: '武汉',
  355. value: 30
  356. }
  357. ],
  358. [
  359. {
  360. name: '九江'
  361. },
  362. {
  363. name: '南昌',
  364. value: 20
  365. }
  366. ],
  367. [
  368. {
  369. name: '九江'
  370. },
  371. {
  372. name: '合肥',
  373. value: 70
  374. }
  375. ],
  376. [
  377. {
  378. name: '九江'
  379. },
  380. {
  381. name: '南京',
  382. value: 60
  383. }
  384. ],
  385. [
  386. {
  387. name: '九江'
  388. },
  389. {
  390. name: '福州',
  391. value: 50
  392. }
  393. ],
  394. [
  395. {
  396. name: '九江'
  397. },
  398. {
  399. name: '上海',
  400. value: 100
  401. }
  402. ],
  403. [
  404. {
  405. name: '九江'
  406. },
  407. {
  408. name: '深圳',
  409. value: 100
  410. }
  411. ]
  412. ]
  413. var GZData = [
  414. [
  415. {
  416. name: '新疆玛纳斯基地'
  417. },
  418. {
  419. name: '新疆玛纳斯基地',
  420. value: 200
  421. }
  422. ],
  423. [
  424. {
  425. name: '新疆玛纳斯基地'
  426. },
  427. {
  428. name: ' ',
  429. value: 90
  430. }
  431. ],
  432. [
  433. {
  434. name: '新疆玛纳斯基地'
  435. },
  436. {
  437. name: ' ',
  438. value: 40
  439. }
  440. ],
  441. [
  442. {
  443. name: '新疆玛纳斯基地'
  444. },
  445. {
  446. name: '呼和浩特',
  447. value: 90
  448. }
  449. ],
  450. [
  451. {
  452. name: '新疆玛纳斯基地'
  453. },
  454. {
  455. name: '昆明',
  456. value: 40
  457. }
  458. ],
  459. [
  460. {
  461. name: '新疆玛纳斯基地'
  462. },
  463. {
  464. name: '成都',
  465. value: 10
  466. }
  467. ],
  468. [
  469. {
  470. name: '新疆玛纳斯基地'
  471. },
  472. {
  473. name: '兰州',
  474. value: 95
  475. }
  476. ],
  477. [
  478. {
  479. name: '新疆玛纳斯基地'
  480. },
  481. {
  482. name: '银川',
  483. value: 90
  484. }
  485. ],
  486. [
  487. {
  488. name: '新疆玛纳斯基地'
  489. },
  490. {
  491. name: '西宁',
  492. value: 80
  493. }
  494. ]
  495. ]
  496. var planePath =
  497. 'path://M.6,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705'
  498. var convertData = function(data) {
  499. var res = []
  500. for (var i = 0; i < data.length; i++) {
  501. var dataItem = data[i]
  502. var fromCoord = geoCoordMap[dataItem[0].name]
  503. var toCoord = geoCoordMap[dataItem[1].name]
  504. if (fromCoord && toCoord) {
  505. res.push([
  506. {
  507. coord: fromCoord
  508. },
  509. {
  510. coord: toCoord
  511. }
  512. ])
  513. }
  514. }
  515. return res
  516. }
  517. var color = ['#3ed4ff', '#ffa022', '#a6c84c']
  518. var series = []
  519. ;[
  520. ['新乡', BJData],
  521. ['九江', SHData],
  522. ['新疆', GZData]
  523. ].forEach(function(item, i) {
  524. series.push(
  525. {
  526. name: item[0] + ' Top10',
  527. type: 'lines',
  528. coordinateSystem: 'GLMap',
  529. zlevel: 1,
  530. effect: {
  531. show: true,
  532. period: 6,
  533. trailLength: 0.7,
  534. color: '#fff',
  535. symbolSize: 3
  536. },
  537. lineStyle: {
  538. normal: {
  539. color: color[i],
  540. width: 0,
  541. curveness: 0.2
  542. }
  543. },
  544. data: convertData(item[1])
  545. },
  546. {
  547. name: item[0] + ' Top10',
  548. type: 'lines',
  549. coordinateSystem: 'GLMap',
  550. zlevel: 2,
  551. effect: {
  552. show: true,
  553. period: 6,
  554. trailLength: 0,
  555. symbol: planePath,
  556. symbolSize: 15
  557. },
  558. lineStyle: {
  559. normal: {
  560. color: color[i],
  561. width: 1,
  562. opacity: 0.4,
  563. curveness: 0.2
  564. }
  565. },
  566. data: convertData(item[1])
  567. },
  568. {
  569. name: item[0] + ' Top10',
  570. type: 'effectScatter',
  571. coordinateSystem: 'GLMap',
  572. zlevel: 2,
  573. rippleEffect: {
  574. brushType: 'stroke'
  575. },
  576. label: {
  577. normal: {
  578. show: true,
  579. position: 'right',
  580. formatter: '{b}'
  581. }
  582. },
  583. symbolSize: function(val) {
  584. return val[2] / 8
  585. },
  586. itemStyle: {
  587. normal: {
  588. color: color[i]
  589. }
  590. },
  591. data: item[1].map(function(dataItem) {
  592. return {
  593. name: dataItem[1].name,
  594. value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
  595. }
  596. })
  597. }
  598. )
  599. })
  600. return {
  601. animation: false,
  602. title: {
  603. text: '模拟迁徙',
  604. subtext: '数据纯属虚构',
  605. left: 'center',
  606. textStyle: {
  607. color: '#fff'
  608. }
  609. },
  610. tooltip: {
  611. trigger: 'item'
  612. },
  613. legend: {
  614. orient: 'vertical',
  615. top: 'bottom',
  616. left: 'right',
  617. data: ['北京 Top10', '上海 Top10', '广州 Top10'],
  618. textStyle: {
  619. color: '#fff'
  620. },
  621. selectedMode: 'single'
  622. },
  623. GLMap: {},
  624. series: series
  625. }
  626. }
  627. DC.ready({
  628. baseUrl:'../libs/dc-sdk/resources/'
  629. }).then(initViewer)
  630. </script>
  631. </body>
  632. </html>
  633. </body>
  634. </html>