| @@ -0,0 +1 @@ | |||
| registry = "https://registry.npmmirror.com/" | |||
| @@ -15,8 +15,6 @@ DC.ready({}).then(() => {}) | |||
| ```json | |||
| //属性参数(可选) | |||
| { | |||
| "Cesium": "<自定义的Cesium库,如果未设置,将使用框架内部默认Cesium框架>", | |||
| "echarts": "<echarts库,设置后将加载echarts图层>", | |||
| "baseUrl": "<Cesium 静态资源路径,默认值为:“./libs/dc-sdk/resources/” >" | |||
| } | |||
| ``` | |||
| @@ -27,7 +25,7 @@ DC.ready({}).then(() => {}) | |||
| ```js | |||
| DC.registerLib('turf', turf) | |||
| console.log(DC.__namespace.turf) | |||
| console.log(DC.getLib('turf')) | |||
| ``` | |||
| - 参数 | |||
| @@ -1,409 +1,411 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="utf-8" /> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0" /> | |||
| <title>dc-example</title> | |||
| <script src="/libs/dc-sdk/dc.min.js"></script> | |||
| <script src="../echarts.min.js"></script> | |||
| <link href="/libs/dc-sdk/dc.min.css" type="text/css" rel="stylesheet" /> | |||
| <link href="../index.css" type="text/css" rel="stylesheet" /> | |||
| </head> | |||
| <head> | |||
| <meta charset="utf-8"> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0"> | |||
| <title>dc-example</title> | |||
| <script src='/libs/dc-sdk/dc.min.js'></script> | |||
| <script src='../echarts.min.js'></script> | |||
| <link href='/libs/dc-sdk/dc.min.css' type='text/css' rel='stylesheet'> | |||
| <link href='../index.css' type='text/css' rel='stylesheet'> | |||
| </head> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <script> | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer(DC.ImageryType.AMAP,{ | |||
| crs:'WGS84' | |||
| }) | |||
| viewer.addBaseLayer( baseLayer,{ | |||
| brightness : 0.1 | |||
| }) | |||
| let layer = new DC.ChartLayer('layer',viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition("115.79782534952115,31.47385026585756,4856091.799441838,0,-90") | |||
| } | |||
| <script> | |||
| DC.registerLib('echarts', window.echarts) | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer( | |||
| DC.ImageryType.AMAP, | |||
| { | |||
| crs: 'WGS84', | |||
| } | |||
| ) | |||
| viewer.addBaseLayer(baseLayer, { | |||
| brightness: 0.1, | |||
| }) | |||
| let layer = new DC.ChartLayer('layer', viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition( | |||
| '115.79782534952115,31.47385026585756,4856091.799441838,0,-90' | |||
| ) | |||
| } | |||
| function getOption(e) { | |||
| let geoCoordMap = { | |||
| 上海: [121.4648, 31.2891], | |||
| 东莞: [113.8953, 22.901], | |||
| 东营: [118.7073, 37.5513], | |||
| 中山: [113.4229, 22.478], | |||
| 临汾: [111.4783, 36.1615], | |||
| 临沂: [118.3118, 35.2936], | |||
| 丹东: [124.541, 40.4242], | |||
| 丽水: [119.5642, 28.1854], | |||
| 乌鲁木齐: [87.9236, 43.5883], | |||
| 佛山: [112.8955, 23.1097], | |||
| 保定: [115.0488, 39.0948], | |||
| 兰州: [103.5901, 36.3043], | |||
| 包头: [110.3467, 41.4899], | |||
| 北京: [116.4551, 40.2539], | |||
| 北海: [109.314, 21.6211], | |||
| 南京: [118.8062, 31.9208], | |||
| 南宁: [108.479, 23.1152], | |||
| 南昌: [116.0046, 28.6633], | |||
| 赣州: [116.0046, 25.6633], | |||
| 南通: [121.1023, 32.1625], | |||
| 厦门: [118.1689, 24.6478], | |||
| 台州: [121.1353, 28.6688], | |||
| 合肥: [117.29, 32.0581], | |||
| 呼和浩特: [111.4124, 40.4901], | |||
| 咸阳: [108.4131, 34.8706], | |||
| 哈尔滨: [127.9688, 45.368], | |||
| 唐山: [118.4766, 39.6826], | |||
| 嘉兴: [120.9155, 30.6354], | |||
| 大同: [113.7854, 39.8035], | |||
| 大连: [122.2229, 39.4409], | |||
| 天津: [117.4219, 39.4189], | |||
| 太原: [112.3352, 37.9413], | |||
| 威海: [121.9482, 37.1393], | |||
| 宁波: [121.5967, 29.6466], | |||
| 宝鸡: [107.1826, 34.3433], | |||
| 宿迁: [118.5535, 33.7775], | |||
| 宿州: [117.5535, 33.7775], | |||
| 常州: [119.4543, 31.5582], | |||
| 广州: [113.5107, 23.2196], | |||
| 廊坊: [116.521, 39.0509], | |||
| 延安: [109.1052, 36.4252], | |||
| 张家口: [115.1477, 40.8527], | |||
| 徐州: [117.5208, 34.3268], | |||
| 德州: [116.6858, 37.2107], | |||
| 惠州: [114.6204, 23.1647], | |||
| 成都: [103.9526, 30.7617], | |||
| 扬州: [119.4653, 32.8162], | |||
| 承德: [117.5757, 41.4075], | |||
| 拉萨: [91.1865, 30.1465], | |||
| 无锡: [120.3442, 31.5527], | |||
| 日照: [119.2786, 35.5023], | |||
| 昆明: [102.9199, 25.4663], | |||
| 杭州: [119.5313, 29.8773], | |||
| 枣庄: [117.323, 34.8926], | |||
| 曲阜: [117.323, 35.8926], | |||
| 柳州: [109.3799, 24.9774], | |||
| 株洲: [113.5327, 27.0319], | |||
| 武汉: [114.3896, 30.6628], | |||
| 汕头: [117.1692, 23.3405], | |||
| 江门: [112.6318, 22.1484], | |||
| 沈阳: [123.1238, 42.1216], | |||
| 沧州: [116.8286, 38.2104], | |||
| 河源: [114.917, 23.9722], | |||
| 泉州: [118.3228, 25.1147], | |||
| 泰安: [117.0264, 36.0516], | |||
| 泰州: [120.0586, 32.5525], | |||
| 济南: [117.1582, 36.8701], | |||
| 济宁: [116.8286, 35.3375], | |||
| 海口: [110.3893, 19.8516], | |||
| 淄博: [118.0371, 36.6064], | |||
| 淮安: [118.927, 33.4039], | |||
| 深圳: [114.5435, 22.5439], | |||
| 清远: [112.9175, 24.3292], | |||
| 温州: [120.498, 27.8119], | |||
| 渭南: [109.7864, 35.0299], | |||
| 湖州: [119.8608, 30.7782], | |||
| 湘潭: [112.5439, 27.7075], | |||
| 滨州: [117.8174, 37.4963], | |||
| 潍坊: [119.0918, 36.524], | |||
| 烟台: [120.7397, 37.5128], | |||
| 玉溪: [101.9312, 23.8898], | |||
| 珠海: [113.7305, 22.1155], | |||
| 盐城: [120.2234, 33.5577], | |||
| 盘锦: [121.9482, 41.0449], | |||
| 石家庄: [114.4995, 38.1006], | |||
| 福州: [119.4543, 25.9222], | |||
| 秦皇岛: [119.2126, 40.0232], | |||
| 绍兴: [120.564, 29.7565], | |||
| 聊城: [115.9167, 36.4032], | |||
| 肇庆: [112.1265, 23.5822], | |||
| 舟山: [122.2559, 30.2234], | |||
| 苏州: [120.6519, 31.3989], | |||
| 莱芜: [117.6526, 36.2714], | |||
| 菏泽: [115.6201, 35.2057], | |||
| 营口: [122.4316, 40.4297], | |||
| 葫芦岛: [120.1575, 40.578], | |||
| 衡水: [115.8838, 37.7161], | |||
| 衢州: [118.6853, 28.8666], | |||
| 西宁: [101.4038, 36.8207], | |||
| 西安: [109.1162, 34.2004], | |||
| 贵阳: [106.6992, 26.7682], | |||
| 连云港: [119.1248, 34.552], | |||
| 邢台: [114.8071, 37.2821], | |||
| 邯郸: [114.4775, 36.535], | |||
| 郑州: [113.4668, 34.6234], | |||
| 鄂尔多斯: [108.9734, 39.2487], | |||
| 重庆: [107.7539, 30.1904], | |||
| 金华: [120.0037, 29.1028], | |||
| 铜川: [109.0393, 35.1947], | |||
| 银川: [106.3586, 38.1775], | |||
| 镇江: [119.4763, 31.9702], | |||
| 长春: [125.8154, 44.2584], | |||
| 长沙: [113.0823, 28.2568], | |||
| 长治: [112.8625, 36.4746], | |||
| 阳泉: [113.4778, 38.0951], | |||
| 青岛: [120.4651, 36.3373], | |||
| 韶关: [113.7964, 24.7028] | |||
| } | |||
| let chatData = [ | |||
| [ | |||
| '北京', | |||
| [ | |||
| [ | |||
| { | |||
| name: '北京', | |||
| value: 100 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '上海', | |||
| value: 30 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '广州', | |||
| value: 20 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '大连', | |||
| value: 10 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '青岛', | |||
| value: 20 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '石家庄', | |||
| value: 20 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '南昌', | |||
| value: 10 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '合肥', | |||
| value: 30 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '呼和浩特', | |||
| value: 10 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '宿州', | |||
| value: 10 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '曲阜', | |||
| value: 10 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '杭州', | |||
| value: 10 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '武汉', | |||
| value: 10 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '深圳', | |||
| value: 10 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| function getOption(e) { | |||
| let geoCoordMap = { | |||
| 上海: [121.4648, 31.2891], | |||
| 东莞: [113.8953, 22.901], | |||
| 东营: [118.7073, 37.5513], | |||
| 中山: [113.4229, 22.478], | |||
| 临汾: [111.4783, 36.1615], | |||
| 临沂: [118.3118, 35.2936], | |||
| 丹东: [124.541, 40.4242], | |||
| 丽水: [119.5642, 28.1854], | |||
| 乌鲁木齐: [87.9236, 43.5883], | |||
| 佛山: [112.8955, 23.1097], | |||
| 保定: [115.0488, 39.0948], | |||
| 兰州: [103.5901, 36.3043], | |||
| 包头: [110.3467, 41.4899], | |||
| 北京: [116.4551, 40.2539], | |||
| 北海: [109.314, 21.6211], | |||
| 南京: [118.8062, 31.9208], | |||
| 南宁: [108.479, 23.1152], | |||
| 南昌: [116.0046, 28.6633], | |||
| 赣州: [116.0046, 25.6633], | |||
| 南通: [121.1023, 32.1625], | |||
| 厦门: [118.1689, 24.6478], | |||
| 台州: [121.1353, 28.6688], | |||
| 合肥: [117.29, 32.0581], | |||
| 呼和浩特: [111.4124, 40.4901], | |||
| 咸阳: [108.4131, 34.8706], | |||
| 哈尔滨: [127.9688, 45.368], | |||
| 唐山: [118.4766, 39.6826], | |||
| 嘉兴: [120.9155, 30.6354], | |||
| 大同: [113.7854, 39.8035], | |||
| 大连: [122.2229, 39.4409], | |||
| 天津: [117.4219, 39.4189], | |||
| 太原: [112.3352, 37.9413], | |||
| 威海: [121.9482, 37.1393], | |||
| 宁波: [121.5967, 29.6466], | |||
| 宝鸡: [107.1826, 34.3433], | |||
| 宿迁: [118.5535, 33.7775], | |||
| 宿州: [117.5535, 33.7775], | |||
| 常州: [119.4543, 31.5582], | |||
| 广州: [113.5107, 23.2196], | |||
| 廊坊: [116.521, 39.0509], | |||
| 延安: [109.1052, 36.4252], | |||
| 张家口: [115.1477, 40.8527], | |||
| 徐州: [117.5208, 34.3268], | |||
| 德州: [116.6858, 37.2107], | |||
| 惠州: [114.6204, 23.1647], | |||
| 成都: [103.9526, 30.7617], | |||
| 扬州: [119.4653, 32.8162], | |||
| 承德: [117.5757, 41.4075], | |||
| 拉萨: [91.1865, 30.1465], | |||
| 无锡: [120.3442, 31.5527], | |||
| 日照: [119.2786, 35.5023], | |||
| 昆明: [102.9199, 25.4663], | |||
| 杭州: [119.5313, 29.8773], | |||
| 枣庄: [117.323, 34.8926], | |||
| 曲阜: [117.323, 35.8926], | |||
| 柳州: [109.3799, 24.9774], | |||
| 株洲: [113.5327, 27.0319], | |||
| 武汉: [114.3896, 30.6628], | |||
| 汕头: [117.1692, 23.3405], | |||
| 江门: [112.6318, 22.1484], | |||
| 沈阳: [123.1238, 42.1216], | |||
| 沧州: [116.8286, 38.2104], | |||
| 河源: [114.917, 23.9722], | |||
| 泉州: [118.3228, 25.1147], | |||
| 泰安: [117.0264, 36.0516], | |||
| 泰州: [120.0586, 32.5525], | |||
| 济南: [117.1582, 36.8701], | |||
| 济宁: [116.8286, 35.3375], | |||
| 海口: [110.3893, 19.8516], | |||
| 淄博: [118.0371, 36.6064], | |||
| 淮安: [118.927, 33.4039], | |||
| 深圳: [114.5435, 22.5439], | |||
| 清远: [112.9175, 24.3292], | |||
| 温州: [120.498, 27.8119], | |||
| 渭南: [109.7864, 35.0299], | |||
| 湖州: [119.8608, 30.7782], | |||
| 湘潭: [112.5439, 27.7075], | |||
| 滨州: [117.8174, 37.4963], | |||
| 潍坊: [119.0918, 36.524], | |||
| 烟台: [120.7397, 37.5128], | |||
| 玉溪: [101.9312, 23.8898], | |||
| 珠海: [113.7305, 22.1155], | |||
| 盐城: [120.2234, 33.5577], | |||
| 盘锦: [121.9482, 41.0449], | |||
| 石家庄: [114.4995, 38.1006], | |||
| 福州: [119.4543, 25.9222], | |||
| 秦皇岛: [119.2126, 40.0232], | |||
| 绍兴: [120.564, 29.7565], | |||
| 聊城: [115.9167, 36.4032], | |||
| 肇庆: [112.1265, 23.5822], | |||
| 舟山: [122.2559, 30.2234], | |||
| 苏州: [120.6519, 31.3989], | |||
| 莱芜: [117.6526, 36.2714], | |||
| 菏泽: [115.6201, 35.2057], | |||
| 营口: [122.4316, 40.4297], | |||
| 葫芦岛: [120.1575, 40.578], | |||
| 衡水: [115.8838, 37.7161], | |||
| 衢州: [118.6853, 28.8666], | |||
| 西宁: [101.4038, 36.8207], | |||
| 西安: [109.1162, 34.2004], | |||
| 贵阳: [106.6992, 26.7682], | |||
| 连云港: [119.1248, 34.552], | |||
| 邢台: [114.8071, 37.2821], | |||
| 邯郸: [114.4775, 36.535], | |||
| 郑州: [113.4668, 34.6234], | |||
| 鄂尔多斯: [108.9734, 39.2487], | |||
| 重庆: [107.7539, 30.1904], | |||
| 金华: [120.0037, 29.1028], | |||
| 铜川: [109.0393, 35.1947], | |||
| 银川: [106.3586, 38.1775], | |||
| 镇江: [119.4763, 31.9702], | |||
| 长春: [125.8154, 44.2584], | |||
| 长沙: [113.0823, 28.2568], | |||
| 长治: [112.8625, 36.4746], | |||
| 阳泉: [113.4778, 38.0951], | |||
| 青岛: [120.4651, 36.3373], | |||
| 韶关: [113.7964, 24.7028], | |||
| } | |||
| let chatData = [ | |||
| [ | |||
| { | |||
| name: '珠海', | |||
| value: 10 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| '北京', | |||
| [ | |||
| [ | |||
| { | |||
| name: '北京', | |||
| value: 100, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '上海', | |||
| value: 30, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '广州', | |||
| value: 20, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '大连', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '青岛', | |||
| value: 20, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '石家庄', | |||
| value: 20, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '南昌', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '合肥', | |||
| value: 30, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '呼和浩特', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '宿州', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '曲阜', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '杭州', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '武汉', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '深圳', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '珠海', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '福州', | |||
| value: 20, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '西安', | |||
| value: 60, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '赣州', | |||
| value: 10, | |||
| }, | |||
| { | |||
| name: '无锡', | |||
| }, | |||
| ], | |||
| ], | |||
| ], | |||
| [ | |||
| { | |||
| name: '福州', | |||
| value: 20 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '西安', | |||
| value: 60 | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| ] | |||
| let convertData = function (data) { | |||
| let res = [] | |||
| for (let i = 0; i < data.length; i++) { | |||
| let dataItem = data[i] | |||
| let fromCoord = geoCoordMap[dataItem[0].name] | |||
| let toCoord = geoCoordMap[dataItem[1].name] | |||
| if (fromCoord && toCoord) { | |||
| res.push({ | |||
| fromName: dataItem[0].name, | |||
| toName: dataItem[1].name, | |||
| coords: [fromCoord, toCoord], | |||
| value: dataItem[1].value, | |||
| }) | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '赣州', | |||
| value: 10 | |||
| } | |||
| return res | |||
| } | |||
| let n = [] | |||
| chatData.forEach(function (e, a) { | |||
| n.push( | |||
| { | |||
| name: e[2], | |||
| type: 'lines', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| effect: { | |||
| show: !0, | |||
| period: 6, | |||
| trailLength: 0.1, | |||
| symbol: 'arrow', | |||
| symbolSize: 5, | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| color: '#60ff44', | |||
| width: 1, | |||
| opacity: 0.4, | |||
| curveness: 0.2, | |||
| }, | |||
| }, | |||
| data: convertData(e[1]), | |||
| }, | |||
| { | |||
| name: '无锡' | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| brushType: 'stroke', | |||
| }, | |||
| label: { | |||
| normal: { | |||
| show: !0, | |||
| position: 'right', | |||
| formatter: '{b}', | |||
| }, | |||
| }, | |||
| symbolSize: function (e) { | |||
| return 3 + e[2] / 10 | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| color: '#60ff44', | |||
| }, | |||
| }, | |||
| data: e[1].map(function (e) { | |||
| return { | |||
| name: e[0].name, | |||
| value: geoCoordMap[e[0].name].concat([e[0].value]), | |||
| } | |||
| }), | |||
| } | |||
| ] | |||
| ] | |||
| ] | |||
| ] | |||
| let convertData = function(data) { | |||
| let res = [] | |||
| for (let i = 0; i < data.length; i++) { | |||
| let dataItem = data[i] | |||
| let fromCoord = geoCoordMap[dataItem[0].name] | |||
| let toCoord = geoCoordMap[dataItem[1].name] | |||
| if (fromCoord && toCoord) { | |||
| res.push({ | |||
| fromName: dataItem[0].name, | |||
| toName: dataItem[1].name, | |||
| coords: [fromCoord, toCoord], | |||
| value: dataItem[1].value | |||
| }) | |||
| ) | |||
| }) | |||
| return { | |||
| series: n, | |||
| } | |||
| } | |||
| return res | |||
| } | |||
| let n = [] | |||
| chatData.forEach(function(e, a) { | |||
| n.push( | |||
| { | |||
| name: e[2], | |||
| type: 'lines', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| effect: { | |||
| show: !0, | |||
| period: 6, | |||
| trailLength: 0.1, | |||
| symbol: 'arrow', | |||
| symbolSize: 5 | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| color: '#60ff44', | |||
| width: 1, | |||
| opacity: 0.4, | |||
| curveness: 0.2 | |||
| } | |||
| }, | |||
| data: convertData(e[1]) | |||
| }, | |||
| { | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| brushType: 'stroke' | |||
| }, | |||
| label: { | |||
| normal: { | |||
| show: !0, | |||
| position: 'right', | |||
| formatter: '{b}' | |||
| } | |||
| }, | |||
| symbolSize: function(e) { | |||
| return 3 + e[2] / 10 | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| color: '#60ff44' | |||
| } | |||
| }, | |||
| data: e[1].map(function(e) { | |||
| return { | |||
| name: e[0].name, | |||
| value: geoCoordMap[e[0].name].concat([e[0].value]) | |||
| } | |||
| }) | |||
| } | |||
| ) | |||
| }) | |||
| return { | |||
| series: n | |||
| } | |||
| } | |||
| DC.ready({ | |||
| baseUrl:'../libs/dc-sdk/resources/', | |||
| echarts: window.echarts | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| DC.ready({ | |||
| baseUrl: '../libs/dc-sdk/resources/', | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| </html> | |||
| @@ -1,420 +1,422 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="utf-8" /> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0" /> | |||
| <title>dc-example</title> | |||
| <script src="/libs/dc-sdk/dc.min.js"></script> | |||
| <script src="../echarts.min.js"></script> | |||
| <link href="/libs/dc-sdk/dc.min.css" type="text/css" rel="stylesheet" /> | |||
| <link href="../index.css" type="text/css" rel="stylesheet" /> | |||
| </head> | |||
| <head> | |||
| <meta charset="utf-8"> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0"> | |||
| <title>dc-example</title> | |||
| <script src='/libs/dc-sdk/dc.min.js'></script> | |||
| <script src='../echarts.min.js'></script> | |||
| <link href='/libs/dc-sdk/dc.min.css' type='text/css' rel='stylesheet'> | |||
| <link href='../index.css' type='text/css' rel='stylesheet'> | |||
| </head> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <script> | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer(DC.ImageryType.AMAP,{ | |||
| crs:'WGS84' | |||
| }) | |||
| viewer.addBaseLayer( baseLayer,{ | |||
| brightness : 0.1 | |||
| }) | |||
| let layer = new DC.ChartLayer('layer',viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition("115.79782534952115,31.47385026585756,4856091.799441838,0,-90") | |||
| } | |||
| <script> | |||
| DC.registerLib('echarts', window.echarts) | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer( | |||
| DC.ImageryType.AMAP, | |||
| { | |||
| crs: 'WGS84', | |||
| } | |||
| ) | |||
| viewer.addBaseLayer(baseLayer, { | |||
| brightness: 0.1, | |||
| }) | |||
| let layer = new DC.ChartLayer('layer', viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition( | |||
| '115.79782534952115,31.47385026585756,4856091.799441838,0,-90' | |||
| ) | |||
| } | |||
| function getOption(e) { | |||
| let chinaGeoCoordMap = { | |||
| 黑龙江: [127.9688, 45.368], | |||
| 内蒙古: [110.3467, 41.4899], | |||
| 吉林: [125.8154, 44.2584], | |||
| 北京市: [116.4551, 40.2539], | |||
| 辽宁: [123.1238, 42.1216], | |||
| 河北: [114.4995, 38.1006], | |||
| 天津: [117.4219, 39.4189], | |||
| 山西: [112.3352, 37.9413], | |||
| 陕西: [109.1162, 34.2004], | |||
| 甘肃: [103.5901, 36.3043], | |||
| 宁夏: [106.3586, 38.1775], | |||
| 青海: [101.4038, 36.8207], | |||
| 新疆: [87.9236, 43.5883], | |||
| 西藏: [91.11, 29.97], | |||
| 四川: [103.9526, 30.7617], | |||
| 重庆: [108.384366, 30.439702], | |||
| 山东: [117.1582, 36.8701], | |||
| 河南: [113.4668, 34.6234], | |||
| 江苏: [118.8062, 31.9208], | |||
| 安徽: [117.29, 32.0581], | |||
| 湖北: [114.3896, 30.6628], | |||
| 浙江: [119.5313, 29.8773], | |||
| 福建: [119.4543, 25.9222], | |||
| 江西: [116.0046, 28.6633], | |||
| 湖南: [113.0823, 28.2568], | |||
| 贵州: [106.6992, 26.7682], | |||
| 云南: [102.9199, 25.4663], | |||
| 广东: [113.12244, 23.009505], | |||
| 广西: [108.479, 23.1152], | |||
| 海南: [110.3893, 19.8516], | |||
| 上海: [121.4648, 31.2891] | |||
| } | |||
| let chinaDatas = [ | |||
| [ | |||
| { | |||
| name: '黑龙江', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '内蒙古', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '吉林', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '辽宁', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '河北', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '天津', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '山西', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '陕西', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '甘肃', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '宁夏', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '青海', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '新疆', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '西藏', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '四川', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '重庆', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '山东', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '河南', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '江苏', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '安徽', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '湖北', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '浙江', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '福建', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| function getOption(e) { | |||
| let chinaGeoCoordMap = { | |||
| 黑龙江: [127.9688, 45.368], | |||
| 内蒙古: [110.3467, 41.4899], | |||
| 吉林: [125.8154, 44.2584], | |||
| 北京市: [116.4551, 40.2539], | |||
| 辽宁: [123.1238, 42.1216], | |||
| 河北: [114.4995, 38.1006], | |||
| 天津: [117.4219, 39.4189], | |||
| 山西: [112.3352, 37.9413], | |||
| 陕西: [109.1162, 34.2004], | |||
| 甘肃: [103.5901, 36.3043], | |||
| 宁夏: [106.3586, 38.1775], | |||
| 青海: [101.4038, 36.8207], | |||
| 新疆: [87.9236, 43.5883], | |||
| 西藏: [91.11, 29.97], | |||
| 四川: [103.9526, 30.7617], | |||
| 重庆: [108.384366, 30.439702], | |||
| 山东: [117.1582, 36.8701], | |||
| 河南: [113.4668, 34.6234], | |||
| 江苏: [118.8062, 31.9208], | |||
| 安徽: [117.29, 32.0581], | |||
| 湖北: [114.3896, 30.6628], | |||
| 浙江: [119.5313, 29.8773], | |||
| 福建: [119.4543, 25.9222], | |||
| 江西: [116.0046, 28.6633], | |||
| 湖南: [113.0823, 28.2568], | |||
| 贵州: [106.6992, 26.7682], | |||
| 云南: [102.9199, 25.4663], | |||
| 广东: [113.12244, 23.009505], | |||
| 广西: [108.479, 23.1152], | |||
| 海南: [110.3893, 19.8516], | |||
| 上海: [121.4648, 31.2891], | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '江西', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '湖南', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '贵州', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '广西', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '海南', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2 | |||
| } | |||
| ] | |||
| ] | |||
| let convertData = function(data) { | |||
| let res = [] | |||
| for (let i = 0; i < data.length; i++) { | |||
| let dataItem = data[i] | |||
| // console.log('dataItem',dataItem) //第二个数据 | |||
| let fromCoord = [116.4551, 40.2539] | |||
| let toCoord = chinaGeoCoordMap[dataItem[0].name] | |||
| // console.log('toCoord',toCoord);//第一个地址 | |||
| if (fromCoord && toCoord) { | |||
| res.push([ | |||
| let chinaDatas = [ | |||
| [ | |||
| { | |||
| name: '黑龙江', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '内蒙古', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '吉林', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '辽宁', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '河北', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '天津', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '山西', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '陕西', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '甘肃', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '宁夏', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| coord: fromCoord, | |||
| value: dataItem[0].value | |||
| name: '青海', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| coord: toCoord, | |||
| dataItem: dataItem | |||
| name: '新疆', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '西藏', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '四川', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '重庆', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '山东', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '河南', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '江苏', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '安徽', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '湖北', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '浙江', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '福建', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '江西', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '湖南', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '贵州', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '广西', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '海南', | |||
| value: 0, | |||
| price: 100, | |||
| num: 2, | |||
| }, | |||
| ], | |||
| ] | |||
| let convertData = function (data) { | |||
| let res = [] | |||
| for (let i = 0; i < data.length; i++) { | |||
| let dataItem = data[i] | |||
| // console.log('dataItem',dataItem) //第二个数据 | |||
| let fromCoord = [116.4551, 40.2539] | |||
| let toCoord = chinaGeoCoordMap[dataItem[0].name] | |||
| // console.log('toCoord',toCoord);//第一个地址 | |||
| if (fromCoord && toCoord) { | |||
| res.push([ | |||
| { | |||
| coord: fromCoord, | |||
| value: dataItem[0].value, | |||
| }, | |||
| { | |||
| coord: toCoord, | |||
| dataItem: dataItem, | |||
| }, | |||
| ]) | |||
| } | |||
| ]) | |||
| } | |||
| return res | |||
| } | |||
| } | |||
| return res | |||
| } | |||
| let redName = '新疆' | |||
| let planePath = | |||
| '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' | |||
| let redName = '新疆' | |||
| let planePath = | |||
| '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' | |||
| let series = [] | |||
| ;[['北京市', chinaDatas]].forEach(function(item, i) { | |||
| series.push( | |||
| { | |||
| type: 'lines', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| effect: { | |||
| show: true, | |||
| period: 4, //箭头指向速度,值越小速度越快 | |||
| trailLength: 0.1, //特效尾迹长度[0,1]值越大,尾迹越长重 | |||
| symbol: 'circle', //箭头图标 | |||
| symbolSize: 3, //图标大小 | |||
| color: '#fff' | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| width: 0.7, //尾迹线条宽度 | |||
| opacity: 0.5, //尾迹线条透明度 | |||
| curveness: 0.2, //尾迹线条曲直度 | |||
| color: function(params) { | |||
| return '#ffa022' | |||
| } | |||
| let series = [] | |||
| ;[['北京市', chinaDatas]].forEach(function (item, i) { | |||
| series.push( | |||
| { | |||
| type: 'lines', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| effect: { | |||
| show: true, | |||
| period: 4, //箭头指向速度,值越小速度越快 | |||
| trailLength: 0.1, //特效尾迹长度[0,1]值越大,尾迹越长重 | |||
| symbol: 'circle', //箭头图标 | |||
| symbolSize: 3, //图标大小 | |||
| color: '#fff', | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| width: 0.7, //尾迹线条宽度 | |||
| opacity: 0.5, //尾迹线条透明度 | |||
| curveness: 0.2, //尾迹线条曲直度 | |||
| color: function (params) { | |||
| return '#ffa022' | |||
| }, | |||
| }, | |||
| color: 'red', | |||
| }, | |||
| data: convertData(item[1]), | |||
| }, | |||
| color: 'red' | |||
| }, | |||
| data: convertData(item[1]) | |||
| }, | |||
| { | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| //涟漪特效 | |||
| period: 4, //动画时间,值越小速度越快 | |||
| brushType: 'fill', //波纹绘制方式 stroke, fill | |||
| scale: 2.2 //波纹圆环最大限制,值越大波纹越大 | |||
| }, | |||
| // 括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none' | |||
| // symbol: 'none', | |||
| symbol: 'circle', | |||
| symbolSize: function(val) { | |||
| return 5 //圆环大小 | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| show: false, | |||
| // color: '#f00' | |||
| color: function(params) { | |||
| //圆环显示文字 | |||
| // console.log('redName',redName) | |||
| { | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| //涟漪特效 | |||
| period: 4, //动画时间,值越小速度越快 | |||
| brushType: 'fill', //波纹绘制方式 stroke, fill | |||
| scale: 2.2, //波纹圆环最大限制,值越大波纹越大 | |||
| }, | |||
| return '#ffa022' | |||
| // 括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none' | |||
| // symbol: 'none', | |||
| symbol: 'circle', | |||
| symbolSize: function (val) { | |||
| return 5 //圆环大小 | |||
| }, | |||
| borderWidth: 0, | |||
| shadowColor: '#b5e8fa', //发光🉐效果 | |||
| shadowBlur: 4 | |||
| } | |||
| }, | |||
| data: item[1].map(function(dataItem) { | |||
| // console.log('dataItem',dataItem[0]); | |||
| return { | |||
| dataItem: dataItem, | |||
| name: dataItem[0].name, | |||
| value: chinaGeoCoordMap[dataItem[0].name].concat([ | |||
| dataItem[0].value | |||
| ]) | |||
| } | |||
| }) | |||
| }, | |||
| //被攻击点 | |||
| { | |||
| type: 'scatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 1, | |||
| rippleEffect: { | |||
| period: 4, | |||
| brushType: 'stroke', | |||
| scale: 4 | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| show: false, | |||
| // color: '#f00' | |||
| color: function (params) { | |||
| //圆环显示文字 | |||
| // console.log('redName',redName) | |||
| symbol: 'circle', | |||
| color: 'rgba(128, 220, 251, .6)', | |||
| symbolSize: 20, | |||
| data: [ | |||
| return '#ffa022' | |||
| }, | |||
| borderWidth: 0, | |||
| shadowColor: '#b5e8fa', //发光🉐效果 | |||
| shadowBlur: 4, | |||
| }, | |||
| }, | |||
| data: item[1].map(function (dataItem) { | |||
| // console.log('dataItem',dataItem[0]); | |||
| return { | |||
| dataItem: dataItem, | |||
| name: dataItem[0].name, | |||
| value: chinaGeoCoordMap[dataItem[0].name].concat([ | |||
| dataItem[0].value, | |||
| ]), | |||
| } | |||
| }), | |||
| }, | |||
| //被攻击点 | |||
| { | |||
| name: item[0], | |||
| value: chinaGeoCoordMap[item[0]].concat([10]) | |||
| type: 'scatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 1, | |||
| rippleEffect: { | |||
| period: 4, | |||
| brushType: 'stroke', | |||
| scale: 4, | |||
| }, | |||
| symbol: 'circle', | |||
| color: 'rgba(128, 220, 251, .6)', | |||
| symbolSize: 20, | |||
| data: [ | |||
| { | |||
| name: item[0], | |||
| value: chinaGeoCoordMap[item[0]].concat([10]), | |||
| }, | |||
| ], | |||
| } | |||
| ] | |||
| } | |||
| ) | |||
| }) | |||
| ) | |||
| }) | |||
| return { | |||
| series | |||
| } | |||
| } | |||
| return { | |||
| series, | |||
| } | |||
| } | |||
| DC.ready({ | |||
| baseUrl:'../libs/dc-sdk/resources/', | |||
| echarts: window.echarts | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| DC.ready({ | |||
| baseUrl: '../libs/dc-sdk/resources/', | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| </html> | |||
| @@ -1,324 +1,333 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="utf-8" /> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0" /> | |||
| <title>dc-example</title> | |||
| <script src="/libs/dc-sdk/dc.min.js"></script> | |||
| <script src="../echarts.min.js"></script> | |||
| <link href="/libs/dc-sdk/dc.min.css" type="text/css" rel="stylesheet" /> | |||
| <link href="../index.css" type="text/css" rel="stylesheet" /> | |||
| </head> | |||
| <head> | |||
| <meta charset="utf-8"> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0"> | |||
| <title>dc-example</title> | |||
| <script src='/libs/dc-sdk/dc.min.js'></script> | |||
| <script src='../echarts.min.js'></script> | |||
| <link href='/libs/dc-sdk/dc.min.css' type='text/css' rel='stylesheet'> | |||
| <link href='../index.css' type='text/css' rel='stylesheet'> | |||
| </head> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <body> | |||
| <script> | |||
| DC.registerLib('echarts', window.echarts) | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer( | |||
| DC.ImageryType.AMAP, | |||
| { | |||
| crs: 'WGS84', | |||
| } | |||
| ) | |||
| viewer.addBaseLayer(baseLayer, { | |||
| brightness: 0.1, | |||
| }) | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <script> | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer(DC.ImageryType.AMAP,{ | |||
| crs:'WGS84' | |||
| }) | |||
| viewer.addBaseLayer( baseLayer,{ | |||
| brightness : 0.1 | |||
| }) | |||
| let layer = new DC.ChartLayer('layer',viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition("115.79782534952115,31.47385026585756,4856091.799441838,0,-90") | |||
| } | |||
| function getOption(){ | |||
| let geoCoordMap = { | |||
| '上海': [121.4648,31.2891], | |||
| '东莞': [113.8953,22.901], | |||
| '东营': [118.7073,37.5513], | |||
| '中山': [113.4229,22.478], | |||
| '临汾': [111.4783,36.1615], | |||
| '临沂': [118.3118,35.2936], | |||
| '丹东': [124.541,40.4242], | |||
| '丽水': [119.5642,28.1854], | |||
| '乌鲁木齐': [87.9236,43.5883], | |||
| '佛山': [112.8955,23.1097], | |||
| '保定': [115.0488,39.0948], | |||
| '兰州': [103.5901,36.3043], | |||
| '包头': [110.3467,41.4899], | |||
| '北京': [116.4551,40.2539], | |||
| '北海': [109.314,21.6211], | |||
| '南京': [118.8062,31.9208], | |||
| '南宁': [108.479,23.1152], | |||
| '南昌': [116.0046,28.6633], | |||
| '南通': [121.1023,32.1625], | |||
| '厦门': [118.1689,24.6478], | |||
| '台州': [121.1353,28.6688], | |||
| '合肥': [117.29,32.0581], | |||
| '呼和浩特': [111.4124,40.4901], | |||
| '咸阳': [108.4131,34.8706], | |||
| '哈尔滨': [127.9688,45.368], | |||
| '唐山': [118.4766,39.6826], | |||
| '嘉兴': [120.9155,30.6354], | |||
| '大同': [113.7854,39.8035], | |||
| '大连': [122.2229,39.4409], | |||
| '天津': [117.4219,39.4189], | |||
| '太原': [112.3352,37.9413], | |||
| '威海': [121.9482,37.1393], | |||
| '宁波': [121.5967,29.6466], | |||
| '宝鸡': [107.1826,34.3433], | |||
| '宿迁': [118.5535,33.7775], | |||
| '常州': [119.4543,31.5582], | |||
| '广州': [113.5107,23.2196], | |||
| '廊坊': [116.521,39.0509], | |||
| '延安': [109.1052,36.4252], | |||
| '张家口': [115.1477,40.8527], | |||
| '徐州': [117.5208,34.3268], | |||
| '德州': [116.6858,37.2107], | |||
| '惠州': [114.6204,23.1647], | |||
| '成都': [103.9526,30.7617], | |||
| '扬州': [119.4653,32.8162], | |||
| '承德': [117.5757,41.4075], | |||
| '拉萨': [91.1865,30.1465], | |||
| '无锡': [120.3442,31.5527], | |||
| '日照': [119.2786,35.5023], | |||
| '昆明': [102.9199,25.4663], | |||
| '杭州': [119.5313,29.8773], | |||
| '枣庄': [117.323,34.8926], | |||
| '柳州': [109.3799,24.9774], | |||
| '株洲': [113.5327,27.0319], | |||
| '武汉': [114.3896,30.6628], | |||
| '汕头': [117.1692,23.3405], | |||
| '江门': [112.6318,22.1484], | |||
| '沈阳': [123.1238,42.1216], | |||
| '沧州': [116.8286,38.2104], | |||
| '河源': [114.917,23.9722], | |||
| '泉州': [118.3228,25.1147], | |||
| '泰安': [117.0264,36.0516], | |||
| '泰州': [120.0586,32.5525], | |||
| '济南': [117.1582,36.8701], | |||
| '济宁': [116.8286,35.3375], | |||
| '海口': [110.3893,19.8516], | |||
| '淄博': [118.0371,36.6064], | |||
| '淮安': [118.927,33.4039], | |||
| '深圳': [114.5435,22.5439], | |||
| '清远': [112.9175,24.3292], | |||
| '温州': [120.498,27.8119], | |||
| '渭南': [109.7864,35.0299], | |||
| '湖州': [119.8608,30.7782], | |||
| '湘潭': [112.5439,27.7075], | |||
| '滨州': [117.8174,37.4963], | |||
| '潍坊': [119.0918,36.524], | |||
| '烟台': [120.7397,37.5128], | |||
| '玉溪': [101.9312,23.8898], | |||
| '珠海': [113.7305,22.1155], | |||
| '盐城': [120.2234,33.5577], | |||
| '盘锦': [121.9482,41.0449], | |||
| '石家庄': [114.4995,38.1006], | |||
| '福州': [119.4543,25.9222], | |||
| '秦皇岛': [119.2126,40.0232], | |||
| '绍兴': [120.564,29.7565], | |||
| '聊城': [115.9167,36.4032], | |||
| '肇庆': [112.1265,23.5822], | |||
| '舟山': [122.2559,30.2234], | |||
| '苏州': [120.6519,31.3989], | |||
| '莱芜': [117.6526,36.2714], | |||
| '菏泽': [115.6201,35.2057], | |||
| '营口': [122.4316,40.4297], | |||
| '葫芦岛': [120.1575,40.578], | |||
| '衡水': [115.8838,37.7161], | |||
| '衢州': [118.6853,28.8666], | |||
| '西宁': [101.4038,36.8207], | |||
| '西安': [109.1162,34.2004], | |||
| '贵阳': [106.6992,26.7682], | |||
| '连云港': [119.1248,34.552], | |||
| '邢台': [114.8071,37.2821], | |||
| '邯郸': [114.4775,36.535], | |||
| '郑州': [113.4668,34.6234], | |||
| '鄂尔多斯': [108.9734,39.2487], | |||
| '重庆': [107.7539,30.1904], | |||
| '金华': [120.0037,29.1028], | |||
| '铜川': [109.0393,35.1947], | |||
| '银川': [106.3586,38.1775], | |||
| '镇江': [119.4763,31.9702], | |||
| '长春': [125.8154,44.2584], | |||
| '长沙': [113.0823,28.2568], | |||
| '长治': [112.8625,36.4746], | |||
| '阳泉': [113.4778,38.0951], | |||
| '青岛': [120.4651,36.3373], | |||
| '韶关': [113.7964,24.7028] | |||
| }; | |||
| let layer = new DC.ChartLayer('layer', viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition( | |||
| '115.79782534952115,31.47385026585756,4856091.799441838,0,-90' | |||
| ) | |||
| } | |||
| let BJData = [ | |||
| [{name:'北京'}, {name:'上海',value:95}], | |||
| [{name:'北京'}, {name:'广州',value:90}], | |||
| [{name:'北京'}, {name:'大连',value:80}], | |||
| [{name:'北京'}, {name:'南宁',value:70}], | |||
| [{name:'北京'}, {name:'南昌',value:60}], | |||
| [{name:'北京'}, {name:'拉萨',value:50}], | |||
| [{name:'北京'}, {name:'长春',value:40}], | |||
| [{name:'北京'}, {name:'包头',value:30}], | |||
| [{name:'北京'}, {name:'重庆',value:20}], | |||
| [{name:'北京'}, {name:'常州',value:10}] | |||
| ]; | |||
| function getOption() { | |||
| let geoCoordMap = { | |||
| 上海: [121.4648, 31.2891], | |||
| 东莞: [113.8953, 22.901], | |||
| 东营: [118.7073, 37.5513], | |||
| 中山: [113.4229, 22.478], | |||
| 临汾: [111.4783, 36.1615], | |||
| 临沂: [118.3118, 35.2936], | |||
| 丹东: [124.541, 40.4242], | |||
| 丽水: [119.5642, 28.1854], | |||
| 乌鲁木齐: [87.9236, 43.5883], | |||
| 佛山: [112.8955, 23.1097], | |||
| 保定: [115.0488, 39.0948], | |||
| 兰州: [103.5901, 36.3043], | |||
| 包头: [110.3467, 41.4899], | |||
| 北京: [116.4551, 40.2539], | |||
| 北海: [109.314, 21.6211], | |||
| 南京: [118.8062, 31.9208], | |||
| 南宁: [108.479, 23.1152], | |||
| 南昌: [116.0046, 28.6633], | |||
| 南通: [121.1023, 32.1625], | |||
| 厦门: [118.1689, 24.6478], | |||
| 台州: [121.1353, 28.6688], | |||
| 合肥: [117.29, 32.0581], | |||
| 呼和浩特: [111.4124, 40.4901], | |||
| 咸阳: [108.4131, 34.8706], | |||
| 哈尔滨: [127.9688, 45.368], | |||
| 唐山: [118.4766, 39.6826], | |||
| 嘉兴: [120.9155, 30.6354], | |||
| 大同: [113.7854, 39.8035], | |||
| 大连: [122.2229, 39.4409], | |||
| 天津: [117.4219, 39.4189], | |||
| 太原: [112.3352, 37.9413], | |||
| 威海: [121.9482, 37.1393], | |||
| 宁波: [121.5967, 29.6466], | |||
| 宝鸡: [107.1826, 34.3433], | |||
| 宿迁: [118.5535, 33.7775], | |||
| 常州: [119.4543, 31.5582], | |||
| 广州: [113.5107, 23.2196], | |||
| 廊坊: [116.521, 39.0509], | |||
| 延安: [109.1052, 36.4252], | |||
| 张家口: [115.1477, 40.8527], | |||
| 徐州: [117.5208, 34.3268], | |||
| 德州: [116.6858, 37.2107], | |||
| 惠州: [114.6204, 23.1647], | |||
| 成都: [103.9526, 30.7617], | |||
| 扬州: [119.4653, 32.8162], | |||
| 承德: [117.5757, 41.4075], | |||
| 拉萨: [91.1865, 30.1465], | |||
| 无锡: [120.3442, 31.5527], | |||
| 日照: [119.2786, 35.5023], | |||
| 昆明: [102.9199, 25.4663], | |||
| 杭州: [119.5313, 29.8773], | |||
| 枣庄: [117.323, 34.8926], | |||
| 柳州: [109.3799, 24.9774], | |||
| 株洲: [113.5327, 27.0319], | |||
| 武汉: [114.3896, 30.6628], | |||
| 汕头: [117.1692, 23.3405], | |||
| 江门: [112.6318, 22.1484], | |||
| 沈阳: [123.1238, 42.1216], | |||
| 沧州: [116.8286, 38.2104], | |||
| 河源: [114.917, 23.9722], | |||
| 泉州: [118.3228, 25.1147], | |||
| 泰安: [117.0264, 36.0516], | |||
| 泰州: [120.0586, 32.5525], | |||
| 济南: [117.1582, 36.8701], | |||
| 济宁: [116.8286, 35.3375], | |||
| 海口: [110.3893, 19.8516], | |||
| 淄博: [118.0371, 36.6064], | |||
| 淮安: [118.927, 33.4039], | |||
| 深圳: [114.5435, 22.5439], | |||
| 清远: [112.9175, 24.3292], | |||
| 温州: [120.498, 27.8119], | |||
| 渭南: [109.7864, 35.0299], | |||
| 湖州: [119.8608, 30.7782], | |||
| 湘潭: [112.5439, 27.7075], | |||
| 滨州: [117.8174, 37.4963], | |||
| 潍坊: [119.0918, 36.524], | |||
| 烟台: [120.7397, 37.5128], | |||
| 玉溪: [101.9312, 23.8898], | |||
| 珠海: [113.7305, 22.1155], | |||
| 盐城: [120.2234, 33.5577], | |||
| 盘锦: [121.9482, 41.0449], | |||
| 石家庄: [114.4995, 38.1006], | |||
| 福州: [119.4543, 25.9222], | |||
| 秦皇岛: [119.2126, 40.0232], | |||
| 绍兴: [120.564, 29.7565], | |||
| 聊城: [115.9167, 36.4032], | |||
| 肇庆: [112.1265, 23.5822], | |||
| 舟山: [122.2559, 30.2234], | |||
| 苏州: [120.6519, 31.3989], | |||
| 莱芜: [117.6526, 36.2714], | |||
| 菏泽: [115.6201, 35.2057], | |||
| 营口: [122.4316, 40.4297], | |||
| 葫芦岛: [120.1575, 40.578], | |||
| 衡水: [115.8838, 37.7161], | |||
| 衢州: [118.6853, 28.8666], | |||
| 西宁: [101.4038, 36.8207], | |||
| 西安: [109.1162, 34.2004], | |||
| 贵阳: [106.6992, 26.7682], | |||
| 连云港: [119.1248, 34.552], | |||
| 邢台: [114.8071, 37.2821], | |||
| 邯郸: [114.4775, 36.535], | |||
| 郑州: [113.4668, 34.6234], | |||
| 鄂尔多斯: [108.9734, 39.2487], | |||
| 重庆: [107.7539, 30.1904], | |||
| 金华: [120.0037, 29.1028], | |||
| 铜川: [109.0393, 35.1947], | |||
| 银川: [106.3586, 38.1775], | |||
| 镇江: [119.4763, 31.9702], | |||
| 长春: [125.8154, 44.2584], | |||
| 长沙: [113.0823, 28.2568], | |||
| 长治: [112.8625, 36.4746], | |||
| 阳泉: [113.4778, 38.0951], | |||
| 青岛: [120.4651, 36.3373], | |||
| 韶关: [113.7964, 24.7028], | |||
| } | |||
| let SHData = [ | |||
| [{name:'上海'},{name:'包头',value:95}], | |||
| [{name:'上海'},{name:'昆明',value:90}], | |||
| [{name:'上海'},{name:'广州',value:80}], | |||
| [{name:'上海'},{name:'郑州',value:70}], | |||
| [{name:'上海'},{name:'长春',value:60}], | |||
| [{name:'上海'},{name:'重庆',value:50}], | |||
| [{name:'上海'},{name:'长沙',value:40}], | |||
| [{name:'上海'},{name:'北京',value:30}], | |||
| [{name:'上海'},{name:'丹东',value:20}], | |||
| [{name:'上海'},{name:'大连',value:10}] | |||
| ]; | |||
| let BJData = [ | |||
| [{ name: '北京' }, { name: '上海', value: 95 }], | |||
| [{ name: '北京' }, { name: '广州', value: 90 }], | |||
| [{ name: '北京' }, { name: '大连', value: 80 }], | |||
| [{ name: '北京' }, { name: '南宁', value: 70 }], | |||
| [{ name: '北京' }, { name: '南昌', value: 60 }], | |||
| [{ name: '北京' }, { name: '拉萨', value: 50 }], | |||
| [{ name: '北京' }, { name: '长春', value: 40 }], | |||
| [{ name: '北京' }, { name: '包头', value: 30 }], | |||
| [{ name: '北京' }, { name: '重庆', value: 20 }], | |||
| [{ name: '北京' }, { name: '常州', value: 10 }], | |||
| ] | |||
| let GZData = [ | |||
| [{name:'广州'},{name:'福州',value:95}], | |||
| [{name:'广州'},{name:'太原',value:90}], | |||
| [{name:'广州'},{name:'长春',value:80}], | |||
| [{name:'广州'},{name:'重庆',value:70}], | |||
| [{name:'广州'},{name:'西安',value:60}], | |||
| [{name:'广州'},{name:'成都',value:50}], | |||
| [{name:'广州'},{name:'常州',value:40}], | |||
| [{name:'广州'},{name:'北京',value:30}], | |||
| [{name:'广州'},{name:'北海',value:20}], | |||
| [{name:'广州'},{name:'海口',value:10}] | |||
| ]; | |||
| let SHData = [ | |||
| [{ name: '上海' }, { name: '包头', value: 95 }], | |||
| [{ name: '上海' }, { name: '昆明', value: 90 }], | |||
| [{ name: '上海' }, { name: '广州', value: 80 }], | |||
| [{ name: '上海' }, { name: '郑州', value: 70 }], | |||
| [{ name: '上海' }, { name: '长春', value: 60 }], | |||
| [{ name: '上海' }, { name: '重庆', value: 50 }], | |||
| [{ name: '上海' }, { name: '长沙', value: 40 }], | |||
| [{ name: '上海' }, { name: '北京', value: 30 }], | |||
| [{ name: '上海' }, { name: '丹东', value: 20 }], | |||
| [{ name: '上海' }, { name: '大连', value: 10 }], | |||
| ] | |||
| let planePath = 'path://M1705.06,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.06,1318.313z'; | |||
| let GZData = [ | |||
| [{ name: '广州' }, { name: '福州', value: 95 }], | |||
| [{ name: '广州' }, { name: '太原', value: 90 }], | |||
| [{ name: '广州' }, { name: '长春', value: 80 }], | |||
| [{ name: '广州' }, { name: '重庆', value: 70 }], | |||
| [{ name: '广州' }, { name: '西安', value: 60 }], | |||
| [{ name: '广州' }, { name: '成都', value: 50 }], | |||
| [{ name: '广州' }, { name: '常州', value: 40 }], | |||
| [{ name: '广州' }, { name: '北京', value: 30 }], | |||
| [{ name: '广州' }, { name: '北海', value: 20 }], | |||
| [{ name: '广州' }, { name: '海口', value: 10 }], | |||
| ] | |||
| let convertData = function (data) { | |||
| let planePath = | |||
| 'path://M1705.06,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.06,1318.313z' | |||
| let res = []; | |||
| for (let i = 0; i < data.length; i++) { | |||
| let dataItem = data[i]; | |||
| let fromCoord = geoCoordMap[dataItem[0].name]; | |||
| let toCoord = geoCoordMap[dataItem[1].name]; | |||
| if (fromCoord && toCoord) { | |||
| res.push({ | |||
| fromName: dataItem[0].name, | |||
| toName: dataItem[1].name, | |||
| coords: [fromCoord, toCoord], | |||
| value: dataItem[1].value | |||
| }); | |||
| let convertData = function (data) { | |||
| let res = [] | |||
| for (let i = 0; i < data.length; i++) { | |||
| let dataItem = data[i] | |||
| let fromCoord = geoCoordMap[dataItem[0].name] | |||
| let toCoord = geoCoordMap[dataItem[1].name] | |||
| if (fromCoord && toCoord) { | |||
| res.push({ | |||
| fromName: dataItem[0].name, | |||
| toName: dataItem[1].name, | |||
| coords: [fromCoord, toCoord], | |||
| value: dataItem[1].value, | |||
| }) | |||
| } | |||
| } | |||
| return res | |||
| } | |||
| } | |||
| return res; | |||
| }; | |||
| let color = ['#a6c84c', '#ffa022', '#46bee9']; | |||
| let series = []; | |||
| [['北京', BJData], ['上海', SHData], ['广州', GZData]].forEach(function (item, i) { | |||
| series.push({ | |||
| name: item[0] + ' Top10', | |||
| type: 'lines', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 1, | |||
| effect: { | |||
| show: true, | |||
| period: 6, | |||
| trailLength: 0.7, | |||
| color: '#fff', | |||
| symbolSize: 3 | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| color: color[i], | |||
| width: 0, | |||
| curveness: 0.2 | |||
| let color = ['#a6c84c', '#ffa022', '#46bee9'] | |||
| let series = [] | |||
| ;[ | |||
| ['北京', BJData], | |||
| ['上海', SHData], | |||
| ['广州', GZData], | |||
| ].forEach(function (item, i) { | |||
| series.push( | |||
| { | |||
| name: item[0] + ' Top10', | |||
| type: 'lines', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 1, | |||
| effect: { | |||
| show: true, | |||
| period: 6, | |||
| trailLength: 0.7, | |||
| color: '#fff', | |||
| symbolSize: 3, | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| color: color[i], | |||
| width: 0, | |||
| curveness: 0.2, | |||
| }, | |||
| }, | |||
| data: convertData(item[1]), | |||
| }, | |||
| { | |||
| name: item[0] + ' Top10', | |||
| type: 'lines', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| symbol: ['none', 'arrow'], | |||
| symbolSize: 10, | |||
| effect: { | |||
| show: true, | |||
| period: 6, | |||
| trailLength: 0, | |||
| symbol: planePath, | |||
| symbolSize: 15, | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| color: color[i], | |||
| width: 1, | |||
| opacity: 0.6, | |||
| curveness: 0.2, | |||
| }, | |||
| }, | |||
| data: convertData(item[1]), | |||
| }, | |||
| { | |||
| name: item[0] + ' Top10', | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| brushType: 'stroke', | |||
| }, | |||
| label: { | |||
| normal: { | |||
| show: true, | |||
| position: 'right', | |||
| formatter: '{b}', | |||
| }, | |||
| }, | |||
| symbolSize: function (val) { | |||
| return val[2] / 8 | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| color: color[i], | |||
| }, | |||
| }, | |||
| data: item[1].map(function (dataItem) { | |||
| return { | |||
| name: dataItem[1].name, | |||
| value: geoCoordMap[dataItem[1].name].concat([ | |||
| dataItem[1].value, | |||
| ]), | |||
| } | |||
| }), | |||
| } | |||
| ) | |||
| }) | |||
| return { | |||
| title: { | |||
| text: '模拟迁徙', | |||
| subtext: '数据纯属虚构', | |||
| left: 'center', | |||
| textStyle: { | |||
| color: '#fff', | |||
| }, | |||
| }, | |||
| data: convertData(item[1]) | |||
| }, | |||
| { | |||
| name: item[0] + ' Top10', | |||
| type: 'lines', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| symbol: ['none', 'arrow'], | |||
| symbolSize: 10, | |||
| effect: { | |||
| show: true, | |||
| period: 6, | |||
| trailLength: 0, | |||
| symbol: planePath, | |||
| symbolSize: 15 | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| color: color[i], | |||
| width: 1, | |||
| opacity: 0.6, | |||
| curveness: 0.2 | |||
| } | |||
| }, | |||
| data: convertData(item[1]) | |||
| }, | |||
| { | |||
| name: item[0] + ' Top10', | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| brushType: 'stroke' | |||
| }, | |||
| label: { | |||
| normal: { | |||
| show: true, | |||
| position: 'right', | |||
| formatter: '{b}' | |||
| } | |||
| }, | |||
| symbolSize: function (val) { | |||
| return val[2] / 8; | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| color: color[i] | |||
| } | |||
| legend: { | |||
| orient: 'vertical', | |||
| top: 'bottom', | |||
| left: 'right', | |||
| data: ['北京 Top10', '上海 Top10', '广州 Top10'], | |||
| textStyle: { | |||
| color: '#fff', | |||
| }, | |||
| selectedMode: 'multiple', | |||
| }, | |||
| data: item[1].map(function (dataItem) { | |||
| return { | |||
| name: dataItem[1].name, | |||
| value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value]) | |||
| }; | |||
| }) | |||
| }); | |||
| }); | |||
| return { | |||
| title : { | |||
| text: '模拟迁徙', | |||
| subtext: '数据纯属虚构', | |||
| left: 'center', | |||
| textStyle : { | |||
| color: '#fff' | |||
| series: series, | |||
| } | |||
| }, | |||
| legend: { | |||
| orient: 'vertical', | |||
| top: 'bottom', | |||
| left: 'right', | |||
| data:['北京 Top10', '上海 Top10', '广州 Top10'], | |||
| textStyle: { | |||
| color: '#fff' | |||
| }, | |||
| selectedMode: 'multiple', | |||
| }, | |||
| series: series | |||
| }; | |||
| } | |||
| } | |||
| DC.ready({ | |||
| baseUrl:'../libs/dc-sdk/resources/', | |||
| echarts: window.echarts | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| DC.ready({ | |||
| baseUrl: '../libs/dc-sdk/resources/', | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| </html> | |||
| @@ -1,369 +1,370 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="utf-8" /> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0" /> | |||
| <title>dc-example</title> | |||
| <script src="/libs/dc-sdk/dc.min.js"></script> | |||
| <script src="../echarts.min.js"></script> | |||
| <link href="/libs/dc-sdk/dc.min.css" type="text/css" rel="stylesheet" /> | |||
| <link href="../index.css" type="text/css" rel="stylesheet" /> | |||
| </head> | |||
| <head> | |||
| <meta charset="utf-8"> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0"> | |||
| <title>dc-example</title> | |||
| <script src='/libs/dc-sdk/dc.min.js'></script> | |||
| <script src='../echarts.min.js'></script> | |||
| <link href='/libs/dc-sdk/dc.min.css' type='text/css' rel='stylesheet'> | |||
| <link href='../index.css' type='text/css' rel='stylesheet'> | |||
| </head> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <script> | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer(DC.ImageryType.AMAP,{ | |||
| crs:'WGS84' | |||
| }) | |||
| viewer.addBaseLayer( baseLayer,{ | |||
| brightness : 0.1 | |||
| }) | |||
| let layer = new DC.ChartLayer('layer',viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition("115.79782534952115,31.47385026585756,4856091.799441838,0,-90") | |||
| } | |||
| <script> | |||
| DC.registerLib('echarts', window.echarts) | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer( | |||
| DC.ImageryType.AMAP, | |||
| { | |||
| crs: 'WGS84', | |||
| } | |||
| ) | |||
| viewer.addBaseLayer(baseLayer, { | |||
| brightness: 0.1, | |||
| }) | |||
| let layer = new DC.ChartLayer('layer', viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition( | |||
| '115.79782534952115,31.47385026585756,4856091.799441838,0,-90' | |||
| ) | |||
| } | |||
| function getOption(e) { | |||
| let chinaGeoCoordMap = { | |||
| 黑龙江: [127.9688, 45.368], | |||
| 大庆: [126.9688, 45.868], | |||
| 内蒙古: [110.3467, 41.4899], | |||
| 吉林: [125.8154, 44.2584], | |||
| 北京: [116.4551, 40.2539], | |||
| 辽宁: [123.1238, 42.1216], | |||
| 河北: [114.4995, 38.1006], | |||
| 天津: [117.4219, 39.4189], | |||
| 山西: [112.3352, 37.9413], | |||
| 陕西: [109.1162, 34.2004], | |||
| 甘肃: [103.5901, 36.3043], | |||
| 宁夏: [106.3586, 38.1775], | |||
| 青海: [101.4038, 36.8207], | |||
| 新疆: [87.9236, 43.5883], | |||
| 西藏: [91.11, 29.97], | |||
| 四川: [103.9526, 30.7617], | |||
| 重庆: [108.384366, 30.439702], | |||
| 山东: [117.1582, 36.8701], | |||
| 河南: [113.4668, 34.6234], | |||
| 江苏: [118.8062, 31.9208], | |||
| 安徽: [117.29, 32.0581], | |||
| 湖北: [114.3896, 30.6628], | |||
| 浙江: [119.5313, 29.8773], | |||
| 福建: [119.4543, 25.9222], | |||
| 江西: [116.0046, 28.6633], | |||
| 湖南: [113.0823, 28.2568], | |||
| 贵州: [106.6992, 26.7682], | |||
| 云南: [102.9199, 25.4663], | |||
| 广东: [113.12244, 23.009505], | |||
| 广西: [108.479, 23.1152], | |||
| 海南: [110.3893, 19.8516], | |||
| 上海: [121.4648, 31.2891] | |||
| } | |||
| let chinaDatas = [ | |||
| [ | |||
| { | |||
| name: '黑龙江', | |||
| value: 0.88 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '内蒙古', | |||
| value: 0.12 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '吉林', | |||
| value: 0.89 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '辽宁', | |||
| value: 0.86 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '河北', | |||
| value: 0.88 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '北京', | |||
| value: 0.83 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '天津', | |||
| value: 0.71 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '山西', | |||
| value: 0.63 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '陕西', | |||
| value: 0.56 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '宁夏', | |||
| value: 0.17 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '云南', | |||
| value: 0.11 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '四川', | |||
| value: 1 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '重庆', | |||
| value: 0.8 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '山东', | |||
| value: 0.77 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '河南', | |||
| value: 0.75 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '江苏', | |||
| value: 0.88 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '安徽', | |||
| value: 0.73 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '湖北', | |||
| value: 0.75 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '浙江', | |||
| value: 0.82 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '福建', | |||
| value: 0.67 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '江西', | |||
| value: 0.71 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '湖南', | |||
| value: 0.75 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '广东', | |||
| value: 0.78 | |||
| function getOption(e) { | |||
| let chinaGeoCoordMap = { | |||
| 黑龙江: [127.9688, 45.368], | |||
| 大庆: [126.9688, 45.868], | |||
| 内蒙古: [110.3467, 41.4899], | |||
| 吉林: [125.8154, 44.2584], | |||
| 北京: [116.4551, 40.2539], | |||
| 辽宁: [123.1238, 42.1216], | |||
| 河北: [114.4995, 38.1006], | |||
| 天津: [117.4219, 39.4189], | |||
| 山西: [112.3352, 37.9413], | |||
| 陕西: [109.1162, 34.2004], | |||
| 甘肃: [103.5901, 36.3043], | |||
| 宁夏: [106.3586, 38.1775], | |||
| 青海: [101.4038, 36.8207], | |||
| 新疆: [87.9236, 43.5883], | |||
| 西藏: [91.11, 29.97], | |||
| 四川: [103.9526, 30.7617], | |||
| 重庆: [108.384366, 30.439702], | |||
| 山东: [117.1582, 36.8701], | |||
| 河南: [113.4668, 34.6234], | |||
| 江苏: [118.8062, 31.9208], | |||
| 安徽: [117.29, 32.0581], | |||
| 湖北: [114.3896, 30.6628], | |||
| 浙江: [119.5313, 29.8773], | |||
| 福建: [119.4543, 25.9222], | |||
| 江西: [116.0046, 28.6633], | |||
| 湖南: [113.0823, 28.2568], | |||
| 贵州: [106.6992, 26.7682], | |||
| 云南: [102.9199, 25.4663], | |||
| 广东: [113.12244, 23.009505], | |||
| 广西: [108.479, 23.1152], | |||
| 海南: [110.3893, 19.8516], | |||
| 上海: [121.4648, 31.2891], | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '海南', | |||
| value: 0.1 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '新疆', | |||
| value: 0 | |||
| } | |||
| ], | |||
| [ | |||
| { | |||
| name: '上海', | |||
| value: 0.91 | |||
| } | |||
| ] | |||
| ] | |||
| let convertData = function(data) { | |||
| let res = [] | |||
| for (let i = 0; i < data.length; i++) { | |||
| let dataItem = data[i] | |||
| let fromCoord = chinaGeoCoordMap[dataItem[0].name] | |||
| let toCoord = [126.9688, 45.868] | |||
| if (fromCoord && toCoord) { | |||
| res.push([ | |||
| let chinaDatas = [ | |||
| [ | |||
| { | |||
| coord: fromCoord, | |||
| value: dataItem[0].value | |||
| name: '黑龙江', | |||
| value: 0.88, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| coord: toCoord | |||
| name: '内蒙古', | |||
| value: 0.12, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '吉林', | |||
| value: 0.89, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '辽宁', | |||
| value: 0.86, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '河北', | |||
| value: 0.88, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '北京', | |||
| value: 0.83, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '天津', | |||
| value: 0.71, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '山西', | |||
| value: 0.63, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '陕西', | |||
| value: 0.56, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '宁夏', | |||
| value: 0.17, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '云南', | |||
| value: 0.11, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '四川', | |||
| value: 1, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '重庆', | |||
| value: 0.8, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '山东', | |||
| value: 0.77, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '河南', | |||
| value: 0.75, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '江苏', | |||
| value: 0.88, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '安徽', | |||
| value: 0.73, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '湖北', | |||
| value: 0.75, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '浙江', | |||
| value: 0.82, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '福建', | |||
| value: 0.67, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '江西', | |||
| value: 0.71, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '湖南', | |||
| value: 0.75, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '广东', | |||
| value: 0.78, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '海南', | |||
| value: 0.1, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '新疆', | |||
| value: 0, | |||
| }, | |||
| ], | |||
| [ | |||
| { | |||
| name: '上海', | |||
| value: 0.91, | |||
| }, | |||
| ], | |||
| ] | |||
| let convertData = function (data) { | |||
| let res = [] | |||
| for (let i = 0; i < data.length; i++) { | |||
| let dataItem = data[i] | |||
| let fromCoord = chinaGeoCoordMap[dataItem[0].name] | |||
| let toCoord = [126.9688, 45.868] | |||
| if (fromCoord && toCoord) { | |||
| res.push([ | |||
| { | |||
| coord: fromCoord, | |||
| value: dataItem[0].value, | |||
| }, | |||
| { | |||
| coord: toCoord, | |||
| }, | |||
| ]) | |||
| } | |||
| ]) | |||
| } | |||
| return res | |||
| } | |||
| } | |||
| return res | |||
| } | |||
| let series = [] | |||
| let colors = ['#f44336', '#fc9700', '#ffde00', '#ffde00', '#00eaff'] | |||
| ;[['大庆', chinaDatas]].forEach(function(item, i) { | |||
| let color = colors[Math.floor(Math.random() * colors.length)] | |||
| series.push( | |||
| { | |||
| type: 'lines', | |||
| zlevel: 2, | |||
| coordinateSystem: 'GLMap', | |||
| effect: { | |||
| show: true, | |||
| period: 4, //箭头指向速度,值越小速度越快 | |||
| trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重 | |||
| symbol: 'arrow', //箭头图标 | |||
| symbolSize: 5 //图标大小 | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| width: 1, //尾迹线条宽度 | |||
| opacity: 1, //尾迹线条透明度 | |||
| curveness: 0.3, //尾迹线条曲直度 | |||
| color: color | |||
| } | |||
| }, | |||
| data: convertData(item[1]) | |||
| }, | |||
| { | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| //涟漪特效 | |||
| period: 4, //动画时间,值越小速度越快 | |||
| brushType: 'stroke', //波纹绘制方式 stroke, fill | |||
| scale: 4 //波纹圆环最大限制,值越大波纹越大 | |||
| }, | |||
| label: { | |||
| normal: { | |||
| show: true, | |||
| position: 'right', //显示位置 | |||
| offset: [5, 0], //偏移设置 | |||
| formatter: function(params) { | |||
| //圆环显示文字 | |||
| return params.data.name | |||
| let series = [] | |||
| let colors = ['#f44336', '#fc9700', '#ffde00', '#ffde00', '#00eaff'] | |||
| ;[['大庆', chinaDatas]].forEach(function (item, i) { | |||
| let color = colors[Math.floor(Math.random() * colors.length)] | |||
| series.push( | |||
| { | |||
| type: 'lines', | |||
| zlevel: 2, | |||
| coordinateSystem: 'GLMap', | |||
| effect: { | |||
| show: true, | |||
| period: 4, //箭头指向速度,值越小速度越快 | |||
| trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重 | |||
| symbol: 'arrow', //箭头图标 | |||
| symbolSize: 5, //图标大小 | |||
| }, | |||
| lineStyle: { | |||
| normal: { | |||
| width: 1, //尾迹线条宽度 | |||
| opacity: 1, //尾迹线条透明度 | |||
| curveness: 0.3, //尾迹线条曲直度 | |||
| color: color, | |||
| }, | |||
| }, | |||
| fontSize: 13 | |||
| data: convertData(item[1]), | |||
| }, | |||
| emphasis: { | |||
| show: true | |||
| } | |||
| }, | |||
| symbol: 'circle', | |||
| symbolSize: function(val) { | |||
| return 5 + val[2] * 5 //圆环大小 | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| show: false, | |||
| color: color | |||
| } | |||
| }, | |||
| data: item[1].map(function(dataItem) { | |||
| return { | |||
| name: dataItem[0].name, | |||
| value: chinaGeoCoordMap[dataItem[0].name].concat([ | |||
| dataItem[0].value | |||
| ]) | |||
| } | |||
| }) | |||
| }, | |||
| //被攻击点 | |||
| { | |||
| type: 'scatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| period: 4, | |||
| brushType: 'stroke', | |||
| scale: 4 | |||
| }, | |||
| label: { | |||
| normal: { | |||
| show: true, | |||
| position: 'right', | |||
| //offset:[5, 0], | |||
| color: '#0f0', | |||
| formatter: '{b}', | |||
| textStyle: { | |||
| color: '#0f0' | |||
| } | |||
| { | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| //涟漪特效 | |||
| period: 4, //动画时间,值越小速度越快 | |||
| brushType: 'stroke', //波纹绘制方式 stroke, fill | |||
| scale: 4, //波纹圆环最大限制,值越大波纹越大 | |||
| }, | |||
| label: { | |||
| normal: { | |||
| show: true, | |||
| position: 'right', //显示位置 | |||
| offset: [5, 0], //偏移设置 | |||
| formatter: function (params) { | |||
| //圆环显示文字 | |||
| return params.data.name | |||
| }, | |||
| fontSize: 13, | |||
| }, | |||
| emphasis: { | |||
| show: true, | |||
| }, | |||
| }, | |||
| symbol: 'circle', | |||
| symbolSize: function (val) { | |||
| return 5 + val[2] * 5 //圆环大小 | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| show: false, | |||
| color: color, | |||
| }, | |||
| }, | |||
| data: item[1].map(function (dataItem) { | |||
| return { | |||
| name: dataItem[0].name, | |||
| value: chinaGeoCoordMap[dataItem[0].name].concat([ | |||
| dataItem[0].value, | |||
| ]), | |||
| } | |||
| }), | |||
| }, | |||
| emphasis: { | |||
| show: true, | |||
| color: '#f60' | |||
| } | |||
| }, | |||
| symbol: 'pin', | |||
| symbolSize: 50, | |||
| data: [ | |||
| //被攻击点 | |||
| { | |||
| name: item[0], | |||
| value: chinaGeoCoordMap[item[0]].concat([10]) | |||
| type: 'scatter', | |||
| coordinateSystem: 'GLMap', | |||
| zlevel: 2, | |||
| rippleEffect: { | |||
| period: 4, | |||
| brushType: 'stroke', | |||
| scale: 4, | |||
| }, | |||
| label: { | |||
| normal: { | |||
| show: true, | |||
| position: 'right', | |||
| //offset:[5, 0], | |||
| color: '#0f0', | |||
| formatter: '{b}', | |||
| textStyle: { | |||
| color: '#0f0', | |||
| }, | |||
| }, | |||
| emphasis: { | |||
| show: true, | |||
| color: '#f60', | |||
| }, | |||
| }, | |||
| symbol: 'pin', | |||
| symbolSize: 50, | |||
| data: [ | |||
| { | |||
| name: item[0], | |||
| value: chinaGeoCoordMap[item[0]].concat([10]), | |||
| }, | |||
| ], | |||
| } | |||
| ] | |||
| } | |||
| ) | |||
| }) | |||
| return { | |||
| series | |||
| } | |||
| } | |||
| ) | |||
| }) | |||
| return { | |||
| series, | |||
| } | |||
| } | |||
| DC.ready({ | |||
| baseUrl:'../libs/dc-sdk/resources/', | |||
| echarts: window.echarts | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| DC.ready({ | |||
| baseUrl: '../libs/dc-sdk/resources/', | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| </html> | |||
| @@ -1,501 +1,506 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="utf-8" /> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0" /> | |||
| <title>dc-example</title> | |||
| <script src="/libs/dc-sdk/dc.min.js"></script> | |||
| <script src="../echarts.min.js"></script> | |||
| <link href="/libs/dc-sdk/dc.min.css" type="text/css" rel="stylesheet" /> | |||
| <link href="../index.css" type="text/css" rel="stylesheet" /> | |||
| </head> | |||
| <head> | |||
| <meta charset="utf-8"> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0"> | |||
| <title>dc-example</title> | |||
| <script src='/libs/dc-sdk/dc.min.js'></script> | |||
| <script src='../echarts.min.js'></script> | |||
| <link href='/libs/dc-sdk/dc.min.css' type='text/css' rel='stylesheet'> | |||
| <link href='../index.css' type='text/css' rel='stylesheet'> | |||
| </head> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <script> | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer(DC.ImageryType.AMAP,{ | |||
| crs:'WGS84' | |||
| }) | |||
| viewer.addBaseLayer( baseLayer,{ | |||
| brightness : 0.1 | |||
| }) | |||
| let layer = new DC.ChartLayer('layer',viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition("115.79782534952115,31.47385026585756,4856091.799441838,0,-90") | |||
| } | |||
| <script> | |||
| DC.registerLib('echarts', window.echarts) | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container') | |||
| let baseLayer = DC.ImageryLayerFactory.createImageryLayer( | |||
| DC.ImageryType.AMAP, | |||
| { | |||
| crs: 'WGS84', | |||
| } | |||
| ) | |||
| viewer.addBaseLayer(baseLayer, { | |||
| brightness: 0.1, | |||
| }) | |||
| let layer = new DC.ChartLayer('layer', viewer) | |||
| layer.setOption(getOption()) | |||
| viewer.addLayer(layer) | |||
| viewer.flyToPosition( | |||
| '115.79782534952115,31.47385026585756,4856091.799441838,0,-90' | |||
| ) | |||
| } | |||
| function getOption(){ | |||
| let data = [ | |||
| {name: '海门', value: 9}, | |||
| {name: '鄂尔多斯', value: 12}, | |||
| {name: '招远', value: 12}, | |||
| {name: '舟山', value: 12}, | |||
| {name: '齐齐哈尔', value: 14}, | |||
| {name: '盐城', value: 15}, | |||
| {name: '赤峰', value: 16}, | |||
| {name: '青岛', value: 18}, | |||
| {name: '乳山', value: 18}, | |||
| {name: '金昌', value: 19}, | |||
| {name: '泉州', value: 21}, | |||
| {name: '莱西', value: 21}, | |||
| {name: '日照', value: 21}, | |||
| {name: '胶南', value: 22}, | |||
| {name: '南通', value: 23}, | |||
| {name: '拉萨', value: 24}, | |||
| {name: '云浮', value: 24}, | |||
| {name: '梅州', value: 25}, | |||
| {name: '文登', value: 25}, | |||
| {name: '上海', value: 25}, | |||
| {name: '攀枝花', value: 25}, | |||
| {name: '威海', value: 25}, | |||
| {name: '承德', value: 25}, | |||
| {name: '厦门', value: 26}, | |||
| {name: '汕尾', value: 26}, | |||
| {name: '潮州', value: 26}, | |||
| {name: '丹东', value: 27}, | |||
| {name: '太仓', value: 27}, | |||
| {name: '曲靖', value: 27}, | |||
| {name: '烟台', value: 28}, | |||
| {name: '福州', value: 29}, | |||
| {name: '瓦房店', value: 30}, | |||
| {name: '即墨', value: 30}, | |||
| {name: '抚顺', value: 31}, | |||
| {name: '玉溪', value: 31}, | |||
| {name: '张家口', value: 31}, | |||
| {name: '阳泉', value: 31}, | |||
| {name: '莱州', value: 32}, | |||
| {name: '湖州', value: 32}, | |||
| {name: '汕头', value: 32}, | |||
| {name: '昆山', value: 33}, | |||
| {name: '宁波', value: 33}, | |||
| {name: '湛江', value: 33}, | |||
| {name: '揭阳', value: 34}, | |||
| {name: '荣成', value: 34}, | |||
| {name: '连云港', value: 35}, | |||
| {name: '葫芦岛', value: 35}, | |||
| {name: '常熟', value: 36}, | |||
| {name: '东莞', value: 36}, | |||
| {name: '河源', value: 36}, | |||
| {name: '淮安', value: 36}, | |||
| {name: '泰州', value: 36}, | |||
| {name: '南宁', value: 37}, | |||
| {name: '营口', value: 37}, | |||
| {name: '惠州', value: 37}, | |||
| {name: '江阴', value: 37}, | |||
| {name: '蓬莱', value: 37}, | |||
| {name: '韶关', value: 38}, | |||
| {name: '嘉峪关', value: 38}, | |||
| {name: '广州', value: 38}, | |||
| {name: '延安', value: 38}, | |||
| {name: '太原', value: 39}, | |||
| {name: '清远', value: 39}, | |||
| {name: '中山', value: 39}, | |||
| {name: '昆明', value: 39}, | |||
| {name: '寿光', value: 40}, | |||
| {name: '盘锦', value: 40}, | |||
| {name: '长治', value: 41}, | |||
| {name: '深圳', value: 41}, | |||
| {name: '珠海', value: 42}, | |||
| {name: '宿迁', value: 43}, | |||
| {name: '咸阳', value: 43}, | |||
| {name: '铜川', value: 44}, | |||
| {name: '平度', value: 44}, | |||
| {name: '佛山', value: 44}, | |||
| {name: '海口', value: 44}, | |||
| {name: '江门', value: 45}, | |||
| {name: '章丘', value: 45}, | |||
| {name: '肇庆', value: 46}, | |||
| {name: '大连', value: 47}, | |||
| {name: '临汾', value: 47}, | |||
| {name: '吴江', value: 47}, | |||
| {name: '石嘴山', value: 49}, | |||
| {name: '沈阳', value: 50}, | |||
| {name: '苏州', value: 50}, | |||
| {name: '茂名', value: 50}, | |||
| {name: '嘉兴', value: 51}, | |||
| {name: '长春', value: 51}, | |||
| {name: '胶州', value: 52}, | |||
| {name: '银川', value: 52}, | |||
| {name: '张家港', value: 52}, | |||
| {name: '三门峡', value: 53}, | |||
| {name: '锦州', value: 54}, | |||
| {name: '南昌', value: 54}, | |||
| {name: '柳州', value: 54}, | |||
| {name: '三亚', value: 54}, | |||
| {name: '自贡', value: 56}, | |||
| {name: '吉林', value: 56}, | |||
| {name: '阳江', value: 57}, | |||
| {name: '泸州', value: 57}, | |||
| {name: '西宁', value: 57}, | |||
| {name: '宜宾', value: 58}, | |||
| {name: '呼和浩特', value: 58}, | |||
| {name: '成都', value: 58}, | |||
| {name: '大同', value: 58}, | |||
| {name: '镇江', value: 59}, | |||
| {name: '桂林', value: 59}, | |||
| {name: '张家界', value: 59}, | |||
| {name: '宜兴', value: 59}, | |||
| {name: '北海', value: 60}, | |||
| {name: '西安', value: 61}, | |||
| {name: '金坛', value: 62}, | |||
| {name: '东营', value: 62}, | |||
| {name: '牡丹江', value: 63}, | |||
| {name: '遵义', value: 63}, | |||
| {name: '绍兴', value: 63}, | |||
| {name: '扬州', value: 64}, | |||
| {name: '常州', value: 64}, | |||
| {name: '潍坊', value: 65}, | |||
| {name: '重庆', value: 66}, | |||
| {name: '台州', value: 67}, | |||
| {name: '南京', value: 67}, | |||
| {name: '滨州', value: 70}, | |||
| {name: '贵阳', value: 71}, | |||
| {name: '无锡', value: 71}, | |||
| {name: '本溪', value: 71}, | |||
| {name: '克拉玛依', value: 72}, | |||
| {name: '渭南', value: 72}, | |||
| {name: '马鞍山', value: 72}, | |||
| {name: '宝鸡', value: 72}, | |||
| {name: '焦作', value: 75}, | |||
| {name: '句容', value: 75}, | |||
| {name: '北京', value: 79}, | |||
| {name: '徐州', value: 79}, | |||
| {name: '衡水', value: 80}, | |||
| {name: '包头', value: 80}, | |||
| {name: '绵阳', value: 80}, | |||
| {name: '乌鲁木齐', value: 84}, | |||
| {name: '枣庄', value: 84}, | |||
| {name: '杭州', value: 84}, | |||
| {name: '淄博', value: 85}, | |||
| {name: '鞍山', value: 86}, | |||
| {name: '溧阳', value: 86}, | |||
| {name: '库尔勒', value: 86}, | |||
| {name: '安阳', value: 90}, | |||
| {name: '开封', value: 90}, | |||
| {name: '济南', value: 92}, | |||
| {name: '德阳', value: 93}, | |||
| {name: '温州', value: 95}, | |||
| {name: '九江', value: 96}, | |||
| {name: '邯郸', value: 98}, | |||
| {name: '临安', value: 99}, | |||
| {name: '兰州', value: 99}, | |||
| {name: '沧州', value: 100}, | |||
| {name: '临沂', value: 103}, | |||
| {name: '南充', value: 104}, | |||
| {name: '天津', value: 105}, | |||
| {name: '富阳', value: 106}, | |||
| {name: '泰安', value: 112}, | |||
| {name: '诸暨', value: 112}, | |||
| {name: '郑州', value: 113}, | |||
| {name: '哈尔滨', value: 114}, | |||
| {name: '聊城', value: 116}, | |||
| {name: '芜湖', value: 117}, | |||
| {name: '唐山', value: 119}, | |||
| {name: '平顶山', value: 119}, | |||
| {name: '邢台', value: 119}, | |||
| {name: '德州', value: 120}, | |||
| {name: '济宁', value: 120}, | |||
| {name: '荆州', value: 127}, | |||
| {name: '宜昌', value: 130}, | |||
| {name: '义乌', value: 132}, | |||
| {name: '丽水', value: 133}, | |||
| {name: '洛阳', value: 134}, | |||
| {name: '秦皇岛', value: 136}, | |||
| {name: '株洲', value: 143}, | |||
| {name: '石家庄', value: 147}, | |||
| {name: '莱芜', value: 148}, | |||
| {name: '常德', value: 152}, | |||
| {name: '保定', value: 153}, | |||
| {name: '湘潭', value: 154}, | |||
| {name: '金华', value: 157}, | |||
| {name: '岳阳', value: 169}, | |||
| {name: '长沙', value: 175}, | |||
| {name: '衢州', value: 177}, | |||
| {name: '廊坊', value: 193}, | |||
| {name: '菏泽', value: 194}, | |||
| {name: '合肥', value: 229}, | |||
| {name: '武汉', value: 273}, | |||
| {name: '大庆', value: 279} | |||
| ]; | |||
| let geoCoordMap = { | |||
| '海门':[121.15,31.89], | |||
| '鄂尔多斯':[109.781327,39.608266], | |||
| '招远':[120.38,37.35], | |||
| '舟山':[122.207216,29.985295], | |||
| '齐齐哈尔':[123.97,47.33], | |||
| '盐城':[120.13,33.38], | |||
| '赤峰':[118.87,42.28], | |||
| '青岛':[120.33,36.07], | |||
| '乳山':[121.52,36.89], | |||
| '金昌':[102.188043,38.520089], | |||
| '泉州':[118.58,24.93], | |||
| '莱西':[120.53,36.86], | |||
| '日照':[119.46,35.42], | |||
| '胶南':[119.97,35.88], | |||
| '南通':[121.05,32.08], | |||
| '拉萨':[91.11,29.97], | |||
| '云浮':[112.02,22.93], | |||
| '梅州':[116.1,24.55], | |||
| '文登':[122.05,37.2], | |||
| '上海':[121.48,31.22], | |||
| '攀枝花':[101.718637,26.582347], | |||
| '威海':[122.1,37.5], | |||
| '承德':[117.93,40.97], | |||
| '厦门':[118.1,24.46], | |||
| '汕尾':[115.375279,22.786211], | |||
| '潮州':[116.63,23.68], | |||
| '丹东':[124.37,40.13], | |||
| '太仓':[121.1,31.45], | |||
| '曲靖':[103.79,25.51], | |||
| '烟台':[121.39,37.52], | |||
| '福州':[119.3,26.08], | |||
| '瓦房店':[121.979603,39.627114], | |||
| '即墨':[120.45,36.38], | |||
| '抚顺':[123.97,41.97], | |||
| '玉溪':[102.52,24.35], | |||
| '张家口':[114.87,40.82], | |||
| '阳泉':[113.57,37.85], | |||
| '莱州':[119.942327,37.177017], | |||
| '湖州':[120.1,30.86], | |||
| '汕头':[116.69,23.39], | |||
| '昆山':[120.95,31.39], | |||
| '宁波':[121.56,29.86], | |||
| '湛江':[110.359377,21.270708], | |||
| '揭阳':[116.35,23.55], | |||
| '荣成':[122.41,37.16], | |||
| '连云港':[119.16,34.59], | |||
| '葫芦岛':[120.836932,40.711052], | |||
| '常熟':[120.74,31.64], | |||
| '东莞':[113.75,23.04], | |||
| '河源':[114.68,23.73], | |||
| '淮安':[119.15,33.5], | |||
| '泰州':[119.9,32.49], | |||
| '南宁':[108.33,22.84], | |||
| '营口':[122.18,40.65], | |||
| '惠州':[114.4,23.09], | |||
| '江阴':[120.26,31.91], | |||
| '蓬莱':[120.75,37.8], | |||
| '韶关':[113.62,24.84], | |||
| '嘉峪关':[98.289152,39.77313], | |||
| '广州':[113.23,23.16], | |||
| '延安':[109.47,36.6], | |||
| '太原':[112.53,37.87], | |||
| '清远':[113.01,23.7], | |||
| '中山':[113.38,22.52], | |||
| '昆明':[102.73,25.04], | |||
| '寿光':[118.73,36.86], | |||
| '盘锦':[122.070714,41.119997], | |||
| '长治':[113.08,36.18], | |||
| '深圳':[114.07,22.62], | |||
| '珠海':[113.52,22.3], | |||
| '宿迁':[118.3,33.96], | |||
| '咸阳':[108.72,34.36], | |||
| '铜川':[109.11,35.09], | |||
| '平度':[119.97,36.77], | |||
| '佛山':[113.11,23.05], | |||
| '海口':[110.35,20.02], | |||
| '江门':[113.06,22.61], | |||
| '章丘':[117.53,36.72], | |||
| '肇庆':[112.44,23.05], | |||
| '大连':[121.62,38.92], | |||
| '临汾':[111.5,36.08], | |||
| '吴江':[120.63,31.16], | |||
| '石嘴山':[106.39,39.04], | |||
| '沈阳':[123.38,41.8], | |||
| '苏州':[120.62,31.32], | |||
| '茂名':[110.88,21.68], | |||
| '嘉兴':[120.76,30.77], | |||
| '长春':[125.35,43.88], | |||
| '胶州':[120.03336,36.264622], | |||
| '银川':[106.27,38.47], | |||
| '张家港':[120.555821,31.875428], | |||
| '三门峡':[111.19,34.76], | |||
| '锦州':[121.15,41.13], | |||
| '南昌':[115.89,28.68], | |||
| '柳州':[109.4,24.33], | |||
| '三亚':[109.511909,18.252847], | |||
| '自贡':[104.778442,29.33903], | |||
| '吉林':[126.57,43.87], | |||
| '阳江':[111.95,21.85], | |||
| '泸州':[105.39,28.91], | |||
| '西宁':[101.74,36.56], | |||
| '宜宾':[104.56,29.77], | |||
| '呼和浩特':[111.65,40.82], | |||
| '成都':[104.06,30.67], | |||
| '大同':[113.3,40.12], | |||
| '镇江':[119.44,32.2], | |||
| '桂林':[110.28,25.29], | |||
| '张家界':[110.479191,29.117096], | |||
| '宜兴':[119.82,31.36], | |||
| '北海':[109.12,21.49], | |||
| '西安':[108.95,34.27], | |||
| '金坛':[119.56,31.74], | |||
| '东营':[118.49,37.46], | |||
| '牡丹江':[129.58,44.6], | |||
| '遵义':[106.9,27.7], | |||
| '绍兴':[120.58,30.01], | |||
| '扬州':[119.42,32.39], | |||
| '常州':[119.95,31.79], | |||
| '潍坊':[119.1,36.62], | |||
| '重庆':[106.54,29.59], | |||
| '台州':[121.420757,28.656386], | |||
| '南京':[118.78,32.04], | |||
| '滨州':[118.03,37.36], | |||
| '贵阳':[106.71,26.57], | |||
| '无锡':[120.29,31.59], | |||
| '本溪':[123.73,41.3], | |||
| '克拉玛依':[84.77,45.59], | |||
| '渭南':[109.5,34.52], | |||
| '马鞍山':[118.48,31.56], | |||
| '宝鸡':[107.15,34.38], | |||
| '焦作':[113.21,35.24], | |||
| '句容':[119.16,31.95], | |||
| '北京':[116.46,39.92], | |||
| '徐州':[117.2,34.26], | |||
| '衡水':[115.72,37.72], | |||
| '包头':[110,40.58], | |||
| '绵阳':[104.73,31.48], | |||
| '乌鲁木齐':[87.68,43.77], | |||
| '枣庄':[117.57,34.86], | |||
| '杭州':[120.19,30.26], | |||
| '淄博':[118.05,36.78], | |||
| '鞍山':[122.85,41.12], | |||
| '溧阳':[119.48,31.43], | |||
| '库尔勒':[86.06,41.68], | |||
| '安阳':[114.35,36.1], | |||
| '开封':[114.35,34.79], | |||
| '济南':[117,36.65], | |||
| '德阳':[104.37,31.13], | |||
| '温州':[120.65,28.01], | |||
| '九江':[115.97,29.71], | |||
| '邯郸':[114.47,36.6], | |||
| '临安':[119.72,30.23], | |||
| '兰州':[103.73,36.03], | |||
| '沧州':[116.83,38.33], | |||
| '临沂':[118.35,35.05], | |||
| '南充':[106.110698,30.837793], | |||
| '天津':[117.2,39.13], | |||
| '富阳':[119.95,30.07], | |||
| '泰安':[117.13,36.18], | |||
| '诸暨':[120.23,29.71], | |||
| '郑州':[113.65,34.76], | |||
| '哈尔滨':[126.63,45.75], | |||
| '聊城':[115.97,36.45], | |||
| '芜湖':[118.38,31.33], | |||
| '唐山':[118.02,39.63], | |||
| '平顶山':[113.29,33.75], | |||
| '邢台':[114.48,37.05], | |||
| '德州':[116.29,37.45], | |||
| '济宁':[116.59,35.38], | |||
| '荆州':[112.239741,30.335165], | |||
| '宜昌':[111.3,30.7], | |||
| '义乌':[120.06,29.32], | |||
| '丽水':[119.92,28.45], | |||
| '洛阳':[112.44,34.7], | |||
| '秦皇岛':[119.57,39.95], | |||
| '株洲':[113.16,27.83], | |||
| '石家庄':[114.48,38.03], | |||
| '莱芜':[117.67,36.19], | |||
| '常德':[111.69,29.05], | |||
| '保定':[115.48,38.85], | |||
| '湘潭':[112.91,27.87], | |||
| '金华':[119.64,29.12], | |||
| '岳阳':[113.09,29.37], | |||
| '长沙':[113,28.21], | |||
| '衢州':[118.88,28.97], | |||
| '廊坊':[116.7,39.53], | |||
| '菏泽':[115.480656,35.23375], | |||
| '合肥':[117.27,31.86], | |||
| '武汉':[114.31,30.52], | |||
| '大庆':[125.03,46.58] | |||
| }; | |||
| let convertData = function (data) { | |||
| let res = []; | |||
| for (let i = 0; i < data.length; i++) { | |||
| let geoCoord = geoCoordMap[data[i].name]; | |||
| if (geoCoord) { | |||
| res.push({ | |||
| name: data[i].name, | |||
| value: geoCoord.concat(data[i].value) | |||
| }); | |||
| function getOption() { | |||
| let data = [ | |||
| { name: '海门', value: 9 }, | |||
| { name: '鄂尔多斯', value: 12 }, | |||
| { name: '招远', value: 12 }, | |||
| { name: '舟山', value: 12 }, | |||
| { name: '齐齐哈尔', value: 14 }, | |||
| { name: '盐城', value: 15 }, | |||
| { name: '赤峰', value: 16 }, | |||
| { name: '青岛', value: 18 }, | |||
| { name: '乳山', value: 18 }, | |||
| { name: '金昌', value: 19 }, | |||
| { name: '泉州', value: 21 }, | |||
| { name: '莱西', value: 21 }, | |||
| { name: '日照', value: 21 }, | |||
| { name: '胶南', value: 22 }, | |||
| { name: '南通', value: 23 }, | |||
| { name: '拉萨', value: 24 }, | |||
| { name: '云浮', value: 24 }, | |||
| { name: '梅州', value: 25 }, | |||
| { name: '文登', value: 25 }, | |||
| { name: '上海', value: 25 }, | |||
| { name: '攀枝花', value: 25 }, | |||
| { name: '威海', value: 25 }, | |||
| { name: '承德', value: 25 }, | |||
| { name: '厦门', value: 26 }, | |||
| { name: '汕尾', value: 26 }, | |||
| { name: '潮州', value: 26 }, | |||
| { name: '丹东', value: 27 }, | |||
| { name: '太仓', value: 27 }, | |||
| { name: '曲靖', value: 27 }, | |||
| { name: '烟台', value: 28 }, | |||
| { name: '福州', value: 29 }, | |||
| { name: '瓦房店', value: 30 }, | |||
| { name: '即墨', value: 30 }, | |||
| { name: '抚顺', value: 31 }, | |||
| { name: '玉溪', value: 31 }, | |||
| { name: '张家口', value: 31 }, | |||
| { name: '阳泉', value: 31 }, | |||
| { name: '莱州', value: 32 }, | |||
| { name: '湖州', value: 32 }, | |||
| { name: '汕头', value: 32 }, | |||
| { name: '昆山', value: 33 }, | |||
| { name: '宁波', value: 33 }, | |||
| { name: '湛江', value: 33 }, | |||
| { name: '揭阳', value: 34 }, | |||
| { name: '荣成', value: 34 }, | |||
| { name: '连云港', value: 35 }, | |||
| { name: '葫芦岛', value: 35 }, | |||
| { name: '常熟', value: 36 }, | |||
| { name: '东莞', value: 36 }, | |||
| { name: '河源', value: 36 }, | |||
| { name: '淮安', value: 36 }, | |||
| { name: '泰州', value: 36 }, | |||
| { name: '南宁', value: 37 }, | |||
| { name: '营口', value: 37 }, | |||
| { name: '惠州', value: 37 }, | |||
| { name: '江阴', value: 37 }, | |||
| { name: '蓬莱', value: 37 }, | |||
| { name: '韶关', value: 38 }, | |||
| { name: '嘉峪关', value: 38 }, | |||
| { name: '广州', value: 38 }, | |||
| { name: '延安', value: 38 }, | |||
| { name: '太原', value: 39 }, | |||
| { name: '清远', value: 39 }, | |||
| { name: '中山', value: 39 }, | |||
| { name: '昆明', value: 39 }, | |||
| { name: '寿光', value: 40 }, | |||
| { name: '盘锦', value: 40 }, | |||
| { name: '长治', value: 41 }, | |||
| { name: '深圳', value: 41 }, | |||
| { name: '珠海', value: 42 }, | |||
| { name: '宿迁', value: 43 }, | |||
| { name: '咸阳', value: 43 }, | |||
| { name: '铜川', value: 44 }, | |||
| { name: '平度', value: 44 }, | |||
| { name: '佛山', value: 44 }, | |||
| { name: '海口', value: 44 }, | |||
| { name: '江门', value: 45 }, | |||
| { name: '章丘', value: 45 }, | |||
| { name: '肇庆', value: 46 }, | |||
| { name: '大连', value: 47 }, | |||
| { name: '临汾', value: 47 }, | |||
| { name: '吴江', value: 47 }, | |||
| { name: '石嘴山', value: 49 }, | |||
| { name: '沈阳', value: 50 }, | |||
| { name: '苏州', value: 50 }, | |||
| { name: '茂名', value: 50 }, | |||
| { name: '嘉兴', value: 51 }, | |||
| { name: '长春', value: 51 }, | |||
| { name: '胶州', value: 52 }, | |||
| { name: '银川', value: 52 }, | |||
| { name: '张家港', value: 52 }, | |||
| { name: '三门峡', value: 53 }, | |||
| { name: '锦州', value: 54 }, | |||
| { name: '南昌', value: 54 }, | |||
| { name: '柳州', value: 54 }, | |||
| { name: '三亚', value: 54 }, | |||
| { name: '自贡', value: 56 }, | |||
| { name: '吉林', value: 56 }, | |||
| { name: '阳江', value: 57 }, | |||
| { name: '泸州', value: 57 }, | |||
| { name: '西宁', value: 57 }, | |||
| { name: '宜宾', value: 58 }, | |||
| { name: '呼和浩特', value: 58 }, | |||
| { name: '成都', value: 58 }, | |||
| { name: '大同', value: 58 }, | |||
| { name: '镇江', value: 59 }, | |||
| { name: '桂林', value: 59 }, | |||
| { name: '张家界', value: 59 }, | |||
| { name: '宜兴', value: 59 }, | |||
| { name: '北海', value: 60 }, | |||
| { name: '西安', value: 61 }, | |||
| { name: '金坛', value: 62 }, | |||
| { name: '东营', value: 62 }, | |||
| { name: '牡丹江', value: 63 }, | |||
| { name: '遵义', value: 63 }, | |||
| { name: '绍兴', value: 63 }, | |||
| { name: '扬州', value: 64 }, | |||
| { name: '常州', value: 64 }, | |||
| { name: '潍坊', value: 65 }, | |||
| { name: '重庆', value: 66 }, | |||
| { name: '台州', value: 67 }, | |||
| { name: '南京', value: 67 }, | |||
| { name: '滨州', value: 70 }, | |||
| { name: '贵阳', value: 71 }, | |||
| { name: '无锡', value: 71 }, | |||
| { name: '本溪', value: 71 }, | |||
| { name: '克拉玛依', value: 72 }, | |||
| { name: '渭南', value: 72 }, | |||
| { name: '马鞍山', value: 72 }, | |||
| { name: '宝鸡', value: 72 }, | |||
| { name: '焦作', value: 75 }, | |||
| { name: '句容', value: 75 }, | |||
| { name: '北京', value: 79 }, | |||
| { name: '徐州', value: 79 }, | |||
| { name: '衡水', value: 80 }, | |||
| { name: '包头', value: 80 }, | |||
| { name: '绵阳', value: 80 }, | |||
| { name: '乌鲁木齐', value: 84 }, | |||
| { name: '枣庄', value: 84 }, | |||
| { name: '杭州', value: 84 }, | |||
| { name: '淄博', value: 85 }, | |||
| { name: '鞍山', value: 86 }, | |||
| { name: '溧阳', value: 86 }, | |||
| { name: '库尔勒', value: 86 }, | |||
| { name: '安阳', value: 90 }, | |||
| { name: '开封', value: 90 }, | |||
| { name: '济南', value: 92 }, | |||
| { name: '德阳', value: 93 }, | |||
| { name: '温州', value: 95 }, | |||
| { name: '九江', value: 96 }, | |||
| { name: '邯郸', value: 98 }, | |||
| { name: '临安', value: 99 }, | |||
| { name: '兰州', value: 99 }, | |||
| { name: '沧州', value: 100 }, | |||
| { name: '临沂', value: 103 }, | |||
| { name: '南充', value: 104 }, | |||
| { name: '天津', value: 105 }, | |||
| { name: '富阳', value: 106 }, | |||
| { name: '泰安', value: 112 }, | |||
| { name: '诸暨', value: 112 }, | |||
| { name: '郑州', value: 113 }, | |||
| { name: '哈尔滨', value: 114 }, | |||
| { name: '聊城', value: 116 }, | |||
| { name: '芜湖', value: 117 }, | |||
| { name: '唐山', value: 119 }, | |||
| { name: '平顶山', value: 119 }, | |||
| { name: '邢台', value: 119 }, | |||
| { name: '德州', value: 120 }, | |||
| { name: '济宁', value: 120 }, | |||
| { name: '荆州', value: 127 }, | |||
| { name: '宜昌', value: 130 }, | |||
| { name: '义乌', value: 132 }, | |||
| { name: '丽水', value: 133 }, | |||
| { name: '洛阳', value: 134 }, | |||
| { name: '秦皇岛', value: 136 }, | |||
| { name: '株洲', value: 143 }, | |||
| { name: '石家庄', value: 147 }, | |||
| { name: '莱芜', value: 148 }, | |||
| { name: '常德', value: 152 }, | |||
| { name: '保定', value: 153 }, | |||
| { name: '湘潭', value: 154 }, | |||
| { name: '金华', value: 157 }, | |||
| { name: '岳阳', value: 169 }, | |||
| { name: '长沙', value: 175 }, | |||
| { name: '衢州', value: 177 }, | |||
| { name: '廊坊', value: 193 }, | |||
| { name: '菏泽', value: 194 }, | |||
| { name: '合肥', value: 229 }, | |||
| { name: '武汉', value: 273 }, | |||
| { name: '大庆', value: 279 }, | |||
| ] | |||
| let geoCoordMap = { | |||
| 海门: [121.15, 31.89], | |||
| 鄂尔多斯: [109.781327, 39.608266], | |||
| 招远: [120.38, 37.35], | |||
| 舟山: [122.207216, 29.985295], | |||
| 齐齐哈尔: [123.97, 47.33], | |||
| 盐城: [120.13, 33.38], | |||
| 赤峰: [118.87, 42.28], | |||
| 青岛: [120.33, 36.07], | |||
| 乳山: [121.52, 36.89], | |||
| 金昌: [102.188043, 38.520089], | |||
| 泉州: [118.58, 24.93], | |||
| 莱西: [120.53, 36.86], | |||
| 日照: [119.46, 35.42], | |||
| 胶南: [119.97, 35.88], | |||
| 南通: [121.05, 32.08], | |||
| 拉萨: [91.11, 29.97], | |||
| 云浮: [112.02, 22.93], | |||
| 梅州: [116.1, 24.55], | |||
| 文登: [122.05, 37.2], | |||
| 上海: [121.48, 31.22], | |||
| 攀枝花: [101.718637, 26.582347], | |||
| 威海: [122.1, 37.5], | |||
| 承德: [117.93, 40.97], | |||
| 厦门: [118.1, 24.46], | |||
| 汕尾: [115.375279, 22.786211], | |||
| 潮州: [116.63, 23.68], | |||
| 丹东: [124.37, 40.13], | |||
| 太仓: [121.1, 31.45], | |||
| 曲靖: [103.79, 25.51], | |||
| 烟台: [121.39, 37.52], | |||
| 福州: [119.3, 26.08], | |||
| 瓦房店: [121.979603, 39.627114], | |||
| 即墨: [120.45, 36.38], | |||
| 抚顺: [123.97, 41.97], | |||
| 玉溪: [102.52, 24.35], | |||
| 张家口: [114.87, 40.82], | |||
| 阳泉: [113.57, 37.85], | |||
| 莱州: [119.942327, 37.177017], | |||
| 湖州: [120.1, 30.86], | |||
| 汕头: [116.69, 23.39], | |||
| 昆山: [120.95, 31.39], | |||
| 宁波: [121.56, 29.86], | |||
| 湛江: [110.359377, 21.270708], | |||
| 揭阳: [116.35, 23.55], | |||
| 荣成: [122.41, 37.16], | |||
| 连云港: [119.16, 34.59], | |||
| 葫芦岛: [120.836932, 40.711052], | |||
| 常熟: [120.74, 31.64], | |||
| 东莞: [113.75, 23.04], | |||
| 河源: [114.68, 23.73], | |||
| 淮安: [119.15, 33.5], | |||
| 泰州: [119.9, 32.49], | |||
| 南宁: [108.33, 22.84], | |||
| 营口: [122.18, 40.65], | |||
| 惠州: [114.4, 23.09], | |||
| 江阴: [120.26, 31.91], | |||
| 蓬莱: [120.75, 37.8], | |||
| 韶关: [113.62, 24.84], | |||
| 嘉峪关: [98.289152, 39.77313], | |||
| 广州: [113.23, 23.16], | |||
| 延安: [109.47, 36.6], | |||
| 太原: [112.53, 37.87], | |||
| 清远: [113.01, 23.7], | |||
| 中山: [113.38, 22.52], | |||
| 昆明: [102.73, 25.04], | |||
| 寿光: [118.73, 36.86], | |||
| 盘锦: [122.070714, 41.119997], | |||
| 长治: [113.08, 36.18], | |||
| 深圳: [114.07, 22.62], | |||
| 珠海: [113.52, 22.3], | |||
| 宿迁: [118.3, 33.96], | |||
| 咸阳: [108.72, 34.36], | |||
| 铜川: [109.11, 35.09], | |||
| 平度: [119.97, 36.77], | |||
| 佛山: [113.11, 23.05], | |||
| 海口: [110.35, 20.02], | |||
| 江门: [113.06, 22.61], | |||
| 章丘: [117.53, 36.72], | |||
| 肇庆: [112.44, 23.05], | |||
| 大连: [121.62, 38.92], | |||
| 临汾: [111.5, 36.08], | |||
| 吴江: [120.63, 31.16], | |||
| 石嘴山: [106.39, 39.04], | |||
| 沈阳: [123.38, 41.8], | |||
| 苏州: [120.62, 31.32], | |||
| 茂名: [110.88, 21.68], | |||
| 嘉兴: [120.76, 30.77], | |||
| 长春: [125.35, 43.88], | |||
| 胶州: [120.03336, 36.264622], | |||
| 银川: [106.27, 38.47], | |||
| 张家港: [120.555821, 31.875428], | |||
| 三门峡: [111.19, 34.76], | |||
| 锦州: [121.15, 41.13], | |||
| 南昌: [115.89, 28.68], | |||
| 柳州: [109.4, 24.33], | |||
| 三亚: [109.511909, 18.252847], | |||
| 自贡: [104.778442, 29.33903], | |||
| 吉林: [126.57, 43.87], | |||
| 阳江: [111.95, 21.85], | |||
| 泸州: [105.39, 28.91], | |||
| 西宁: [101.74, 36.56], | |||
| 宜宾: [104.56, 29.77], | |||
| 呼和浩特: [111.65, 40.82], | |||
| 成都: [104.06, 30.67], | |||
| 大同: [113.3, 40.12], | |||
| 镇江: [119.44, 32.2], | |||
| 桂林: [110.28, 25.29], | |||
| 张家界: [110.479191, 29.117096], | |||
| 宜兴: [119.82, 31.36], | |||
| 北海: [109.12, 21.49], | |||
| 西安: [108.95, 34.27], | |||
| 金坛: [119.56, 31.74], | |||
| 东营: [118.49, 37.46], | |||
| 牡丹江: [129.58, 44.6], | |||
| 遵义: [106.9, 27.7], | |||
| 绍兴: [120.58, 30.01], | |||
| 扬州: [119.42, 32.39], | |||
| 常州: [119.95, 31.79], | |||
| 潍坊: [119.1, 36.62], | |||
| 重庆: [106.54, 29.59], | |||
| 台州: [121.420757, 28.656386], | |||
| 南京: [118.78, 32.04], | |||
| 滨州: [118.03, 37.36], | |||
| 贵阳: [106.71, 26.57], | |||
| 无锡: [120.29, 31.59], | |||
| 本溪: [123.73, 41.3], | |||
| 克拉玛依: [84.77, 45.59], | |||
| 渭南: [109.5, 34.52], | |||
| 马鞍山: [118.48, 31.56], | |||
| 宝鸡: [107.15, 34.38], | |||
| 焦作: [113.21, 35.24], | |||
| 句容: [119.16, 31.95], | |||
| 北京: [116.46, 39.92], | |||
| 徐州: [117.2, 34.26], | |||
| 衡水: [115.72, 37.72], | |||
| 包头: [110, 40.58], | |||
| 绵阳: [104.73, 31.48], | |||
| 乌鲁木齐: [87.68, 43.77], | |||
| 枣庄: [117.57, 34.86], | |||
| 杭州: [120.19, 30.26], | |||
| 淄博: [118.05, 36.78], | |||
| 鞍山: [122.85, 41.12], | |||
| 溧阳: [119.48, 31.43], | |||
| 库尔勒: [86.06, 41.68], | |||
| 安阳: [114.35, 36.1], | |||
| 开封: [114.35, 34.79], | |||
| 济南: [117, 36.65], | |||
| 德阳: [104.37, 31.13], | |||
| 温州: [120.65, 28.01], | |||
| 九江: [115.97, 29.71], | |||
| 邯郸: [114.47, 36.6], | |||
| 临安: [119.72, 30.23], | |||
| 兰州: [103.73, 36.03], | |||
| 沧州: [116.83, 38.33], | |||
| 临沂: [118.35, 35.05], | |||
| 南充: [106.110698, 30.837793], | |||
| 天津: [117.2, 39.13], | |||
| 富阳: [119.95, 30.07], | |||
| 泰安: [117.13, 36.18], | |||
| 诸暨: [120.23, 29.71], | |||
| 郑州: [113.65, 34.76], | |||
| 哈尔滨: [126.63, 45.75], | |||
| 聊城: [115.97, 36.45], | |||
| 芜湖: [118.38, 31.33], | |||
| 唐山: [118.02, 39.63], | |||
| 平顶山: [113.29, 33.75], | |||
| 邢台: [114.48, 37.05], | |||
| 德州: [116.29, 37.45], | |||
| 济宁: [116.59, 35.38], | |||
| 荆州: [112.239741, 30.335165], | |||
| 宜昌: [111.3, 30.7], | |||
| 义乌: [120.06, 29.32], | |||
| 丽水: [119.92, 28.45], | |||
| 洛阳: [112.44, 34.7], | |||
| 秦皇岛: [119.57, 39.95], | |||
| 株洲: [113.16, 27.83], | |||
| 石家庄: [114.48, 38.03], | |||
| 莱芜: [117.67, 36.19], | |||
| 常德: [111.69, 29.05], | |||
| 保定: [115.48, 38.85], | |||
| 湘潭: [112.91, 27.87], | |||
| 金华: [119.64, 29.12], | |||
| 岳阳: [113.09, 29.37], | |||
| 长沙: [113, 28.21], | |||
| 衢州: [118.88, 28.97], | |||
| 廊坊: [116.7, 39.53], | |||
| 菏泽: [115.480656, 35.23375], | |||
| 合肥: [117.27, 31.86], | |||
| 武汉: [114.31, 30.52], | |||
| 大庆: [125.03, 46.58], | |||
| } | |||
| } | |||
| return res; | |||
| }; | |||
| return { | |||
| series : [ | |||
| { | |||
| name: 'pm2.5', | |||
| type: 'scatter', | |||
| coordinateSystem: 'GLMap', | |||
| data: convertData(data), | |||
| symbolSize: function (val) { | |||
| return val[2] / 10; | |||
| }, | |||
| label: { | |||
| normal: { | |||
| formatter: '{b}', | |||
| position: 'right', | |||
| show: false | |||
| }, | |||
| emphasis: { | |||
| show: true | |||
| } | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| color: '#ddb926' | |||
| let convertData = function (data) { | |||
| let res = [] | |||
| for (let i = 0; i < data.length; i++) { | |||
| let geoCoord = geoCoordMap[data[i].name] | |||
| if (geoCoord) { | |||
| res.push({ | |||
| name: data[i].name, | |||
| value: geoCoord.concat(data[i].value), | |||
| }) | |||
| } | |||
| } | |||
| }, | |||
| { | |||
| name: 'Top 5', | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| data: convertData(data.sort(function (a, b) { | |||
| return b.value - a.value; | |||
| }).slice(0, 6)), | |||
| symbolSize: function (val) { | |||
| return val[2] / 10; | |||
| }, | |||
| showEffectOn: 'render', | |||
| rippleEffect: { | |||
| brushType: 'stroke' | |||
| }, | |||
| hoverAnimation: true, | |||
| label: { | |||
| normal: { | |||
| formatter: '{b}', | |||
| position: 'right', | |||
| show: true | |||
| } | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| color: '#f4e925', | |||
| shadowBlur: 10, | |||
| shadowColor: '#333' | |||
| } | |||
| }, | |||
| zlevel: 1 | |||
| return res | |||
| } | |||
| ] | |||
| }; | |||
| } | |||
| DC.ready({ | |||
| baseUrl:'../libs/dc-sdk/resources/', | |||
| echarts: window.echarts | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| return { | |||
| series: [ | |||
| { | |||
| name: 'pm2.5', | |||
| type: 'scatter', | |||
| coordinateSystem: 'GLMap', | |||
| data: convertData(data), | |||
| symbolSize: function (val) { | |||
| return val[2] / 10 | |||
| }, | |||
| label: { | |||
| normal: { | |||
| formatter: '{b}', | |||
| position: 'right', | |||
| show: false, | |||
| }, | |||
| emphasis: { | |||
| show: true, | |||
| }, | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| color: '#ddb926', | |||
| }, | |||
| }, | |||
| }, | |||
| { | |||
| name: 'Top 5', | |||
| type: 'effectScatter', | |||
| coordinateSystem: 'GLMap', | |||
| data: convertData( | |||
| data | |||
| .sort(function (a, b) { | |||
| return b.value - a.value | |||
| }) | |||
| .slice(0, 6) | |||
| ), | |||
| symbolSize: function (val) { | |||
| return val[2] / 10 | |||
| }, | |||
| showEffectOn: 'render', | |||
| rippleEffect: { | |||
| brushType: 'stroke', | |||
| }, | |||
| hoverAnimation: true, | |||
| label: { | |||
| normal: { | |||
| formatter: '{b}', | |||
| position: 'right', | |||
| show: true, | |||
| }, | |||
| }, | |||
| itemStyle: { | |||
| normal: { | |||
| color: '#f4e925', | |||
| shadowBlur: 10, | |||
| shadowColor: '#333', | |||
| }, | |||
| }, | |||
| zlevel: 1, | |||
| }, | |||
| ], | |||
| } | |||
| } | |||
| DC.ready({ | |||
| baseUrl: '../libs/dc-sdk/resources/', | |||
| echarts: window.echarts, | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| </html> | |||
| @@ -1,57 +1,51 @@ | |||
| <!DOCTYPE html> | |||
| <html> | |||
| <head> | |||
| <meta charset="utf-8" /> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0" /> | |||
| <title>dc-example</title> | |||
| <script src="/libs/dc-sdk/dc.min.js"></script> | |||
| <script src="https://cesium.com/downloads/cesiumjs/releases/1.117/Build/Cesium/Cesium.js"></script> | |||
| <link | |||
| href="https://cesium.com/downloads/cesiumjs/releases/1.117/Build/Cesium/Widgets/widgets.css" | |||
| rel="stylesheet" | |||
| /> | |||
| <link href="/libs/dc-sdk/dc.min.css" type="text/css" rel="stylesheet" /> | |||
| <link href="../index.css" type="text/css" rel="stylesheet" /> | |||
| <style> | |||
| .viewer-container { | |||
| position: relative; | |||
| width: 100%; | |||
| height: 100%; | |||
| overflow: hidden; | |||
| } | |||
| </style> | |||
| </head> | |||
| <head> | |||
| <meta charset="utf-8"> | |||
| <meta name="viewport" content="width=device-width,initial-scale=1.0"> | |||
| <title>dc-example</title> | |||
| <script src='/libs/dc-sdk/dc.min.js'></script> | |||
| <script src="https://cesium.com/downloads/cesiumjs/releases/1.117/Build/Cesium/Cesium.js"></script> | |||
| <link href="https://cesium.com/downloads/cesiumjs/releases/1.117/Build/Cesium/Widgets/widgets.css" rel="stylesheet"/> | |||
| <link href='/libs/dc-sdk/dc.min.css' type='text/css' rel='stylesheet'> | |||
| <link href='../index.css' type='text/css' rel='stylesheet'> | |||
| <style> | |||
| .viewer-container{ | |||
| position: relative; | |||
| width: 100%; | |||
| height: 100%; | |||
| overflow: hidden; | |||
| } | |||
| </style> | |||
| </head> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <script> | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| viewer = new DC.Viewer('viewer-container',{ | |||
| baseLayerPicker:false, | |||
| baseLayer:false, | |||
| animation: false, | |||
| fullscreenButton: false, | |||
| geocoder: false, | |||
| homeButton: false, | |||
| infoBox: false, | |||
| sceneModePicker: false, | |||
| selectionIndicator: false, | |||
| timeline: false, | |||
| navigationHelpButton: false, | |||
| navigationInstructionsInitiallyVisible: false, | |||
| creditContainer: undefined, | |||
| shouldAnimate: true | |||
| }) | |||
| viewer.delegate.cesiumWidget.creditContainer.style.display = 'none' | |||
| viewer.delegate.cesiumWidget.screenSpaceEventHandler.removeInputAction( | |||
| window.Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK | |||
| ) | |||
| viewer.scene.screenSpaceCameraController.maximumZoomDistance = 40489014.0 | |||
| viewer.scene.backgroundColor = window.Cesium.Color.TRANSPARENT | |||
| viewer.delegate.imageryLayers.removeAll() | |||
| } | |||
| DC.ready({ | |||
| Cesium: window.Cesium | |||
| }).then(initViewer) | |||
| </script> | |||
| </body> | |||
| <body> | |||
| <div id="viewer-container" class="viewer-container"></div> | |||
| <script> | |||
| let viewer = undefined | |||
| function initViewer() { | |||
| let CesiumViewer = new Cesium.Viewer('viewer-container', { | |||
| baseLayerPicker: false, | |||
| baseLayer: false, | |||
| animation: false, | |||
| fullscreenButton: false, | |||
| geocoder: false, | |||
| homeButton: false, | |||
| infoBox: false, | |||
| sceneModePicker: false, | |||
| selectionIndicator: false, | |||
| timeline: false, | |||
| navigationHelpButton: false, | |||
| navigationInstructionsInitiallyVisible: false, | |||
| creditContainer: undefined, | |||
| shouldAnimate: true, | |||
| }) | |||
| viewer = new DC.Viewer(CesiumViewer) | |||
| } | |||
| DC.ready().then(initViewer) | |||
| </script> | |||
| </body> | |||
| </html> | |||
| @@ -10,11 +10,11 @@ import gulp from 'gulp' | |||
| import esbuild from 'esbuild' | |||
| import concat from 'gulp-concat' | |||
| import clean from 'gulp-clean' | |||
| import javascriptObfuscator from 'gulp-javascript-obfuscator' | |||
| import startServer from './server.js' | |||
| import inlineImage from 'esbuild-plugin-inline-image' | |||
| import { sassPlugin } from 'esbuild-sass-plugin' | |||
| import { glsl } from 'esbuild-plugin-glsl' | |||
| import GlobalsPlugin from 'esbuild-plugin-globals' | |||
| import shell from 'shelljs' | |||
| import chalk from 'chalk' | |||
| @@ -26,19 +26,6 @@ const c_packageJson = fse.readJsonSync( | |||
| path.join(dc_common_path, 'package.json') | |||
| ) | |||
| const obfuscatorConfig = { | |||
| compact: true, //压缩代码 | |||
| identifierNamesGenerator: 'hexadecimal', //标识符的混淆方式 hexadecimal(十六进制) mangled(短标识符) | |||
| renameGlobals: false, //是否启用全局变量和函数名称的混淆 | |||
| rotateStringArray: true, //通过固定和随机(在代码混淆时生成)的位置移动数组。这使得将删除的字符串的顺序与其原始位置相匹配变得更加困难。如果原始源代码不小,建议使用此选项,因为辅助函数可以引起注意。 | |||
| selfDefending: true, //混淆后的代码,不能使用代码美化,同时需要配置 compact:true; | |||
| stringArray: true, //删除字符串文字并将它们放在一个特殊的数组中 | |||
| stringArrayEncoding: ['base64'], | |||
| stringArrayThreshold: 0.75, | |||
| transformObjectKeys: false, | |||
| unicodeEscapeSequence: false, //允许启用/禁用字符串转换为unicode转义序列。Unicode转义序列大大增加了代码大小,并且可以轻松地将字符串恢复为原始视图。建议仅对小型源代码启用此选项。 | |||
| } | |||
| const buildConfig = { | |||
| entryPoints: ['src/DC.js'], | |||
| bundle: true, | |||
| @@ -57,6 +44,7 @@ const buildConfig = { | |||
| glsl(), | |||
| sassPlugin(), | |||
| ], | |||
| external: ['@dvgis/dc-common', 'turf', 'echarts'], | |||
| } | |||
| function getTime() { | |||
| @@ -105,52 +93,36 @@ async function buildModules(options) { | |||
| .replace('{{__REPOSITORY__}}', packageJson.repository)} | |||
| }` | |||
| const importNamespace = ` | |||
| import {Cesium , Supercluster } from '@dvgis/dc-common' | |||
| ` | |||
| const exportNamespace = ` | |||
| export const __namespace = { | |||
| Cesium : Cesium, | |||
| Supercluster: Supercluster | |||
| } | |||
| ` | |||
| // Build IIFE | |||
| if (options.iife) { | |||
| await fse.outputFile( | |||
| dcPath, | |||
| ` | |||
| await fse.outputFile( | |||
| dcPath, | |||
| ` | |||
| ${content} | |||
| ${cmdOutFunction} | |||
| ${exportVersion} | |||
| `, | |||
| { | |||
| encoding: 'utf8', | |||
| } | |||
| ) | |||
| { | |||
| encoding: 'utf8', | |||
| } | |||
| ) | |||
| // Build IIFE | |||
| if (options.iife) { | |||
| await esbuild.build({ | |||
| ...buildConfig, | |||
| format: 'iife', | |||
| globalName: 'DC', | |||
| plugins: [ | |||
| ...buildConfig.plugins, | |||
| GlobalsPlugin({ | |||
| '@dvgis/dc-common': 'DC_Common', | |||
| charts: 'charts', | |||
| }), | |||
| ], | |||
| outfile: path.join('dist', 'modules-iife.js'), | |||
| }) | |||
| } | |||
| // Build Node、 | |||
| if (options.node) { | |||
| await fse.outputFile( | |||
| dcPath, | |||
| ` | |||
| ${importNamespace} | |||
| ${content} | |||
| ${exportVersion} | |||
| ${exportNamespace} | |||
| ${cmdOutFunction} | |||
| `, | |||
| { | |||
| encoding: 'utf8', | |||
| } | |||
| ) | |||
| await esbuild.build({ | |||
| ...buildConfig, | |||
| format: 'esm', | |||
| @@ -158,7 +130,6 @@ async function buildModules(options) { | |||
| define: { | |||
| TransformStream: 'null', | |||
| }, | |||
| external: ['@dvgis/dc-common'], | |||
| outfile: path.join('dist', 'index.js'), | |||
| }) | |||
| } | |||
| @@ -170,42 +141,23 @@ async function buildModules(options) { | |||
| async function combineJs(options) { | |||
| // combine for iife | |||
| if (options.iife) { | |||
| if (options.obfuscate) { | |||
| await gulp | |||
| .src('dist/modules-iife.js') | |||
| .pipe(javascriptObfuscator(obfuscatorConfig)) | |||
| .pipe(gulp.src(path.join(dc_common_path, 'dist', '__namespace.js'))) | |||
| .pipe(concat('dc.min.js')) | |||
| .pipe(gulp.dest('dist')) | |||
| .on('end', () => { | |||
| addCopyright(options) | |||
| deleteTempFile() | |||
| }) | |||
| } else { | |||
| await gulp | |||
| .src([ | |||
| 'dist/modules-iife.js', | |||
| path.join(dc_common_path, 'dist', '__namespace.js'), | |||
| ]) | |||
| .pipe(concat('dc.min.js')) | |||
| .pipe(gulp.dest('dist')) | |||
| .on('end', () => { | |||
| addCopyright(options) | |||
| deleteTempFile() | |||
| }) | |||
| } | |||
| await gulp | |||
| .src([ | |||
| path.join(dc_common_path, 'dist', 'dc.common.min.js'), | |||
| 'dist/modules-iife.js', | |||
| ]) | |||
| .pipe(concat('dc.min.js')) | |||
| .pipe(gulp.dest('dist')) | |||
| .on('end', () => { | |||
| addCopyright(options) | |||
| deleteTempFile() | |||
| }) | |||
| } | |||
| // combine for node | |||
| if (options.node && options.obfuscate) { | |||
| await gulp | |||
| .src('dist/index.js') | |||
| .pipe( | |||
| javascriptObfuscator({ | |||
| ...obfuscatorConfig, | |||
| target: 'browser-no-eval', | |||
| }) | |||
| ) | |||
| .pipe(gulp.dest('dist')) | |||
| .on('end', () => { | |||
| addCopyright(options) | |||
| @@ -313,9 +265,9 @@ export const build = gulp.series( | |||
| export const buildRelease = gulp.series( | |||
| () => buildModules({ iife: true }), | |||
| () => combineJs({ iife: true, obfuscate: true }), | |||
| () => combineJs({ iife: true }), | |||
| () => buildModules({ node: true }), | |||
| () => combineJs({ node: true, obfuscate: true }), | |||
| () => combineJs({ node: true }), | |||
| () => buildCSS({ minify: true }), | |||
| copyAssets | |||
| ) | |||
| @@ -1,6 +1,6 @@ | |||
| { | |||
| "name": "@dvgis/dc-sdk", | |||
| "version": "3.5.0", | |||
| "version": "4.0.0", | |||
| "license": "MIT", | |||
| "description": "The SDK is based on Cesium for secondary development of 2, 3D all-in-one WebGis application framework, the framework optimizes the use of Cesium and add some additional features, designed for developers to quickly build WebGis applications.", | |||
| "repository": "https://github.com/dvgis/dc-sdk.git", | |||
| @@ -37,6 +37,7 @@ | |||
| "@babel/preset-env": "^7.21.5", | |||
| "chalk": "^5.2.0", | |||
| "esbuild": "^0.20.1", | |||
| "esbuild-plugin-globals": "^0.2.0", | |||
| "esbuild-plugin-glsl": "^1.2.1", | |||
| "esbuild-plugin-inline-image": "^0.0.9", | |||
| "esbuild-sass-plugin": "^3.1.0", | |||
| @@ -66,6 +67,7 @@ | |||
| "dist" | |||
| ], | |||
| "dependencies": { | |||
| "@dvgis/dc-common": "^3.5.0" | |||
| "@dvgis/dc-common": "^3.5.1", | |||
| "echarts": "^5.5.1" | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| /** | |||
| * @Author : Caven Chen | |||
| */ | |||
| export { registerLib, getLib } from './lib-utils.js' | |||
| export { setParam, getParam } from './paramter.js' | |||
| @@ -11,6 +11,10 @@ const cache = {} | |||
| */ | |||
| export function registerLib(name, lib) { | |||
| cache[name] = lib | |||
| if (name === 'echarts' && this.registerEcharts) { | |||
| this.registerEcharts(lib) | |||
| } | |||
| return this | |||
| } | |||
| /** | |||
| @@ -0,0 +1,23 @@ | |||
| /** | |||
| * @Author : Caven Chen | |||
| */ | |||
| const params = {} | |||
| /** | |||
| * set param | |||
| * @param name | |||
| * @param value | |||
| */ | |||
| export function setParam(name, value) { | |||
| params[name] = value | |||
| } | |||
| /** | |||
| * get param | |||
| * @param name | |||
| * @return {*} | |||
| */ | |||
| export function getParam(name) { | |||
| return params[name] | |||
| } | |||
| @@ -1,16 +1,22 @@ | |||
| /** | |||
| @Author: Caven Chen | |||
| **/ | |||
| import { getLib, registerLib } from './global-api/lib-utils.js' | |||
| export { registerLib, getLib } from './global-api/lib-utils.js' | |||
| import { setParam } from './global-api' | |||
| const DEF_BASE_URL = './libs/dc-sdk/resources/' | |||
| let _baseUrl = DEF_BASE_URL | |||
| let __isInitialized = false | |||
| export { registerLib, getLib } from './global-api' | |||
| export * from './modules' | |||
| export * from './modules/third-part' | |||
| export { Math } from './modules/math' | |||
| export { registerEcharts, ChartLayer } from './modules/chart' | |||
| export const config = { | |||
| set baseUrl(baseUrl) { | |||
| _baseUrl = baseUrl | |||
| @@ -24,62 +30,14 @@ export function ready(options = {}) { | |||
| if (__isInitialized) { | |||
| return Promise.resolve() | |||
| } | |||
| __cmdOut && __cmdOut() | |||
| // __cmdOut && __cmdOut() | |||
| if (options['baseUrl']) { | |||
| this.config.baseUrl = options['baseUrl'] | |||
| } | |||
| if (options['Cesium']) { | |||
| registerLib('Cesium', options['Cesium']) | |||
| if (this.config.baseUrl === DEF_BASE_URL) { | |||
| this.config.baseUrl = '' | |||
| } | |||
| } else { | |||
| registerLib('Cesium', this['__namespace']['Cesium']) | |||
| } | |||
| if (options['echarts']) { | |||
| registerLib('echarts', options['echarts']) | |||
| } | |||
| if (options['Supercluster']) { | |||
| registerLib('Supercluster', options['Supercluster']) | |||
| } else { | |||
| registerLib('Supercluster', this['__namespace']['Supercluster']) | |||
| } | |||
| __isInitialized = true | |||
| return new Promise((resolve, reject) => { | |||
| const Cesium = getLib('Cesium') | |||
| if (!Cesium) { | |||
| throw new Error('missing Cesium Lib') | |||
| } | |||
| this.config.baseUrl && Cesium.buildModuleUrl.setBaseUrl(this.config.baseUrl) | |||
| // register common modules | |||
| const modules = require('./modules') | |||
| Object.keys(modules).forEach((key) => { | |||
| this[key] = modules[key] | |||
| }) | |||
| // register third part modules | |||
| const { THIRD_PART } = require('./modules/third-part') | |||
| Object.keys(THIRD_PART).forEach((key) => { | |||
| this[key] = THIRD_PART[key] | |||
| }) | |||
| // register math module | |||
| if (this['Math']) { | |||
| const maths = require('./modules/math') | |||
| Object.keys(maths).forEach((key) => { | |||
| this['Math'][key] = maths[key] | |||
| }) | |||
| } | |||
| // register chart module | |||
| if (getLib('echarts')) { | |||
| const modules = require('./modules/chart') | |||
| Object.keys(modules).forEach((key) => { | |||
| this[key] = modules[key] | |||
| }) | |||
| } | |||
| __isInitialized = true | |||
| setParam('isInitialized', true) | |||
| setParam('baseUrl', this.config.baseUrl) | |||
| resolve() | |||
| }).catch((e) => { | |||
| throw new Error(e.message) | |||
| @@ -1,12 +1,10 @@ | |||
| /** | |||
| * @Author : Caven Chen | |||
| */ | |||
| import { echarts } from '../../namespace' | |||
| import { getLib } from '../../global-api/lib-utils.js' | |||
| import { Layer } from '../layer' | |||
| import State from '../state/State.js' | |||
| const { init } = echarts | |||
| class ChartLayer extends Layer { | |||
| constructor(id, option) { | |||
| super(id) | |||
| @@ -40,10 +38,14 @@ class ChartLayer extends Layer { | |||
| } | |||
| _onAdd(viewer) { | |||
| let echarts = getLib('echarts') | |||
| if (!echarts) { | |||
| throw new Error('') | |||
| } | |||
| this._viewer = viewer | |||
| this._viewer.canvas.setAttribute('tabIndex', '0') | |||
| this._delegate = this._createChartElement() | |||
| this._chart = init(this._delegate) | |||
| this._chart = echarts.init(this._delegate) | |||
| Object(this._chart.getZr()).viewer = viewer | |||
| this._option && | |||
| this._chart.setOption({ ...this._option, GLMap: {}, animation: false }) | |||
| @@ -2,28 +2,41 @@ | |||
| * @Author : Caven Chen | |||
| */ | |||
| import { echarts, Cesium } from '../../namespace' | |||
| import { Cesium } from '../../namespace' | |||
| const { Cartesian3, Ellipsoid, Math: CesiumMath } = Cesium | |||
| const { graphic, matrix } = echarts | |||
| class GLMapCoordSys { | |||
| constructor(api) { | |||
| export function createGLMapCoordSys(echarts) { | |||
| function GLMapCoordSys(api) { | |||
| this._api = api | |||
| this._viewer = Object(api.getZr()).viewer | |||
| this._mapOffset = [0, 0] | |||
| this.dimensions = ['lng', 'lat'] | |||
| } | |||
| getViewer() { | |||
| /** | |||
| * | |||
| * @returns | |||
| */ | |||
| GLMapCoordSys.prototype.getViewer = function () { | |||
| return this._viewer | |||
| } | |||
| setMapOffset(mapOffset) { | |||
| /** | |||
| * | |||
| * @param {*} mapOffset | |||
| * @returns | |||
| */ | |||
| GLMapCoordSys.prototype.setMapOffset = function (mapOffset) { | |||
| this._mapOffset = mapOffset | |||
| return this | |||
| } | |||
| dataToPoint(data) { | |||
| /** | |||
| * | |||
| * @param {*} data | |||
| * @returns | |||
| */ | |||
| GLMapCoordSys.prototype.dataToPoint = function (data) { | |||
| let result = [] | |||
| let cartesian3 = Cartesian3.fromDegrees(data[0], data[1]) | |||
| if (!cartesian3) { | |||
| @@ -41,7 +54,12 @@ class GLMapCoordSys { | |||
| return [coords.x - this._mapOffset[0], coords.y - this._mapOffset[1]] | |||
| } | |||
| pointToData(point) { | |||
| /** | |||
| * | |||
| * @param {*} point | |||
| * @returns | |||
| */ | |||
| GLMapCoordSys.prototype.pointToData = function (point) { | |||
| let ellipsoid = this._viewer.scene.globe.ellipsoid | |||
| let cartesian3 = new Cartesian3( | |||
| point[0] + this._mapOffset[0], | |||
| @@ -55,16 +73,34 @@ class GLMapCoordSys { | |||
| ] | |||
| } | |||
| getViewRect() { | |||
| /** | |||
| * | |||
| * @returns | |||
| */ | |||
| GLMapCoordSys.prototype.getViewRect = function () { | |||
| let api = this._api | |||
| return new graphic.BoundingRect(0, 0, api.getWidth(), api.getHeight()) | |||
| return new echarts.graphic.BoundingRect( | |||
| 0, | |||
| 0, | |||
| api.getWidth(), | |||
| api.getHeight() | |||
| ) | |||
| } | |||
| getRoamTransform() { | |||
| return matrix.create() | |||
| /** | |||
| * | |||
| * @returns | |||
| */ | |||
| GLMapCoordSys.prototype.getRoamTransform = function () { | |||
| return echarts.matrix.create() | |||
| } | |||
| static create(ecModel, api) { | |||
| /** | |||
| * | |||
| * @param {*} ecModel | |||
| * @param {*} api | |||
| */ | |||
| GLMapCoordSys.create = function (ecModel, api) { | |||
| let coordinateSys = undefined | |||
| ecModel.eachComponent('GLMap', function (model) { | |||
| coordinateSys = new GLMapCoordSys(api) | |||
| @@ -76,8 +112,7 @@ class GLMapCoordSys { | |||
| (model.coordinateSystem = coordinateSys) | |||
| }) | |||
| } | |||
| } | |||
| GLMapCoordSys.dimensions = ['lng', 'lat'] | |||
| export default GLMapCoordSys | |||
| GLMapCoordSys.dimensions = ['lng', 'lat'] | |||
| return GLMapCoordSys | |||
| } | |||
| @@ -1,17 +0,0 @@ | |||
| /** | |||
| * @Author : Caven Chen | |||
| */ | |||
| import { echarts } from '../../namespace' | |||
| const { extendComponentModel } = echarts | |||
| extendComponentModel({ | |||
| type: 'GLMap', | |||
| getViewer() { | |||
| return Object(this.getZr()).viewer | |||
| }, | |||
| defaultOption: { | |||
| roam: false, | |||
| }, | |||
| }) | |||
| @@ -1,30 +0,0 @@ | |||
| /** | |||
| * @Author : Caven Chen | |||
| */ | |||
| import { echarts } from '../../namespace' | |||
| const { extendComponentView } = echarts | |||
| extendComponentView({ | |||
| type: 'GLMap', | |||
| init: function (ecModel, api) { | |||
| this.api = api | |||
| let viewer = api.getZr().viewer | |||
| viewer.clock.onTick.addEventListener(this.moveHandler, this) | |||
| }, | |||
| moveHandler: function () { | |||
| if (this.api.getZr().dom.style.visibility !== 'hidden') { | |||
| this.api.dispatchAction({ | |||
| type: 'GLMapRoam', | |||
| }) | |||
| } | |||
| }, | |||
| render: function (t, e, i) {}, | |||
| dispose: function () { | |||
| let viewer = this.api.getZr().viewer | |||
| viewer.clock.onTick.removeEventListener(this.moveHandler, this) | |||
| }, | |||
| }) | |||
| @@ -2,23 +2,61 @@ | |||
| * @Author : Caven Chen | |||
| */ | |||
| import { echarts } from '../../namespace' | |||
| import './GLMapModel' | |||
| import './GLMapView' | |||
| import GLMapCoordSys from './GLMapCoordSys' | |||
| import ChartLayer from './ChartLayer.js' | |||
| const { registerAction, registerCoordinateSystem } = echarts | |||
| registerCoordinateSystem('GLMap', GLMapCoordSys) | |||
| registerAction( | |||
| { | |||
| type: 'GLMapRoam', | |||
| event: 'GLMapRoam', | |||
| update: 'updateLayout', | |||
| }, | |||
| function (payload, ecModel) {} | |||
| ) | |||
| import { createGLMapCoordSys } from './GLMapCoordSys.js' | |||
| export function registerEcharts(echarts) { | |||
| const { | |||
| registerAction, | |||
| registerCoordinateSystem, | |||
| extendComponentModel, | |||
| extendComponentView, | |||
| } = echarts | |||
| extendComponentModel({ | |||
| type: 'GLMap', | |||
| getViewer() { | |||
| return Object(this.getZr()).viewer | |||
| }, | |||
| defaultOption: { | |||
| roam: false, | |||
| }, | |||
| }) | |||
| extendComponentView({ | |||
| type: 'GLMap', | |||
| init: function (ecModel, api) { | |||
| this.api = api | |||
| let viewer = api.getZr().viewer | |||
| viewer.clock.onTick.addEventListener(this.moveHandler, this) | |||
| }, | |||
| moveHandler: function () { | |||
| if (this.api.getZr().dom.style.visibility !== 'hidden') { | |||
| this.api.dispatchAction({ | |||
| type: 'GLMapRoam', | |||
| }) | |||
| } | |||
| }, | |||
| render: function (t, e, i) {}, | |||
| dispose: function () { | |||
| let viewer = this.api.getZr().viewer | |||
| viewer.clock.onTick.removeEventListener(this.moveHandler, this) | |||
| }, | |||
| }) | |||
| registerCoordinateSystem('GLMap', createGLMapCoordSys(echarts)) | |||
| registerAction( | |||
| { | |||
| type: 'GLMapRoam', | |||
| event: 'GLMapRoam', | |||
| update: 'updateLayout', | |||
| }, | |||
| function (payload, ecModel) {} | |||
| ) | |||
| } | |||
| export { ChartLayer } | |||
| @@ -2,13 +2,47 @@ | |||
| * @Author : Caven Chen | |||
| */ | |||
| export { default as area } from './area' | |||
| export { default as bounds } from './bounds' | |||
| export { default as center } from './center' | |||
| export { default as curve } from './curve' | |||
| export { default as distance } from './distance' | |||
| export { default as heading } from './heading' | |||
| export { default as isBetween } from './isBetween' | |||
| export { default as midCartesian } from './midCartesian' | |||
| export { default as midPosition } from './midPosition' | |||
| export { default as parabola } from './parabola' | |||
| import { Cesium } from '../../namespace' | |||
| import { Util } from '../utils' | |||
| import area from './area' | |||
| import bounds from './bounds' | |||
| import center from './center' | |||
| import curve from './curve' | |||
| import distance from './distance' | |||
| import heading from './heading' | |||
| import isBetween from './isBetween' | |||
| import midCartesian from './midCartesian' | |||
| import midPosition from './midPosition' | |||
| import parabola from './parabola' | |||
| const { Math: CesiumMath } = Cesium | |||
| let Math = {} | |||
| Util.merge(Math, CesiumMath, { | |||
| area, | |||
| bounds, | |||
| center, | |||
| curve, | |||
| distance, | |||
| heading, | |||
| isBetween, | |||
| midCartesian, | |||
| midPosition, | |||
| parabola, | |||
| }) | |||
| export { | |||
| area, | |||
| bounds, | |||
| center, | |||
| curve, | |||
| distance, | |||
| heading, | |||
| isBetween, | |||
| midCartesian, | |||
| midPosition, | |||
| parabola, | |||
| Math, | |||
| } | |||
| @@ -1,49 +1,48 @@ | |||
| /** | |||
| * @Author : Caven Chen | |||
| * @Author: Caven Chen | |||
| */ | |||
| import { Cesium } from '../../namespace' | |||
| export const THIRD_PART = { | |||
| Cartesian2: Cesium.Cartesian2, | |||
| Cartesian3: Cesium.Cartesian3, | |||
| Matrix3: Cesium.Matrix3, | |||
| Matrix4: Cesium.Matrix4, | |||
| Material: Cesium.Material, | |||
| SceneMode: Cesium.SceneMode, | |||
| SkyBox: Cesium.SkyBox, | |||
| Color: Cesium.Color, | |||
| Rectangle: Cesium.Rectangle, | |||
| ShadowMode: Cesium.ShadowMode, | |||
| JulianDate: Cesium.JulianDate, | |||
| HeightReference: Cesium.HeightReference, | |||
| HorizontalOrigin: Cesium.HorizontalOrigin, | |||
| VerticalOrigin: Cesium.VerticalOrigin, | |||
| CallbackProperty: Cesium.CallbackProperty, | |||
| ClassificationType: Cesium.ClassificationType, | |||
| TilesetStyle: Cesium.Cesium3DTileStyle, | |||
| GeographicTilingScheme: Cesium.GeographicTilingScheme, | |||
| WebMercatorTilingScheme: Cesium.WebMercatorTilingScheme, | |||
| ColorMaterialProperty: Cesium.ColorMaterialProperty, | |||
| ImageMaterialProperty: Cesium.ImageMaterialProperty, | |||
| PolylineDashMaterialProperty: Cesium.PolylineDashMaterialProperty, | |||
| PolylineGlowMaterialProperty: Cesium.PolylineGlowMaterialProperty, | |||
| PolylineOutlineMaterialProperty: Cesium.PolylineOutlineMaterialProperty, | |||
| PolylineArrowMaterialProperty: Cesium.PolylineArrowMaterialProperty, | |||
| writeTextToCanvas: Cesium.writeTextToCanvas, | |||
| CustomShaderMode: Cesium.CustomShaderMode, | |||
| CustomShaderTranslucencyMode: Cesium.CustomShaderTranslucencyMode, | |||
| CustomShader: Cesium.CustomShader, | |||
| UniformType: Cesium.UniformType, | |||
| Math: Cesium.Math, | |||
| Ellipsoid: Cesium.Ellipsoid, | |||
| Resource: Cesium.Resource, | |||
| createGooglePhotorealistic3DTileset: | |||
| Cesium.createGooglePhotorealistic3DTileset, | |||
| createElevationBandMaterial: Cesium.createElevationBandMaterial, | |||
| ModelAnimationLoop: Cesium.ModelAnimationLoop, | |||
| ClippingPlane: Cesium.ClippingPlane, | |||
| ClippingPlaneCollection: Cesium.ClippingPlaneCollection, | |||
| ClippingPolygon: Cesium.ClippingPolygon, | |||
| ClippingPolygonCollection: Cesium.ClippingPolygonCollection, | |||
| } | |||
| export const Cartesian2 = Cesium.Cartesian2 | |||
| export const Cartesian3 = Cesium.Cartesian3 | |||
| export const Matrix3 = Cesium.Matrix3 | |||
| export const Matrix4 = Cesium.Matrix4 | |||
| export const Material = Cesium.Material | |||
| export const SceneMode = Cesium.SceneMode | |||
| export const SkyBox = Cesium.SkyBox | |||
| export const Color = Cesium.Color | |||
| export const Rectangle = Cesium.Rectangle | |||
| export const ShadowMode = Cesium.ShadowMode | |||
| export const JulianDate = Cesium.JulianDate | |||
| export const HeightReference = Cesium.HeightReference | |||
| export const HorizontalOrigin = Cesium.HorizontalOrigin | |||
| export const VerticalOrigin = Cesium.VerticalOrigin | |||
| export const CallbackProperty = Cesium.CallbackProperty | |||
| export const ClassificationType = Cesium.ClassificationType | |||
| export const TilesetStyle = Cesium.Cesium3DTileStyle | |||
| export const GeographicTilingScheme = Cesium.GeographicTilingScheme | |||
| export const ebMercatorTilingScheme = Cesium.WebMercatorTilingScheme | |||
| export const ColorMaterialProperty = Cesium.ColorMaterialProperty | |||
| export const ImageMaterialProperty = Cesium.ImageMaterialProperty | |||
| export const PolylineDashMaterialProperty = Cesium.PolylineDashMaterialProperty | |||
| export const PolylineGlowMaterialProperty = Cesium.PolylineGlowMaterialProperty | |||
| export const PolylineOutlineMaterialProperty = | |||
| Cesium.PolylineOutlineMaterialProperty | |||
| export const PolylineArrowMaterialProperty = | |||
| Cesium.PolylineArrowMaterialProperty | |||
| export const writeTextToCanvas = Cesium.writeTextToCanvas | |||
| export const CustomShaderMode = Cesium.CustomShaderMode | |||
| export const CustomShaderTranslucencyMode = Cesium.CustomShaderTranslucencyMode | |||
| export const CustomShader = Cesium.CustomShader | |||
| export const UniformType = Cesium.UniformType | |||
| export const Ellipsoid = Cesium.Ellipsoid | |||
| export const Resource = Cesium.Resource | |||
| export const createGooglePhotorealistic3DTileset = | |||
| Cesium.createGooglePhotorealistic3DTileset | |||
| export const createElevationBandMaterial = Cesium.createElevationBandMaterial | |||
| export const ModelAnimationLoop = Cesium.ModelAnimationLoop | |||
| export const ClippingPlane = Cesium.ClippingPlane | |||
| export const ClippingPlaneCollection = Cesium.ClippingPlaneCollection | |||
| export const ClippingPolygon = Cesium.ClippingPolygon | |||
| export const ClippingPolygonCollection = Cesium.ClippingPolygonCollection | |||
| @@ -4,6 +4,7 @@ | |||
| */ | |||
| import { Cesium } from '../../namespace' | |||
| import { getParam } from '../../global-api' | |||
| import Parse from '../parse/Parse' | |||
| import { | |||
| LayerGroupEventType, | |||
| @@ -25,19 +26,32 @@ const DEF_OPTS = { | |||
| } | |||
| class Viewer { | |||
| constructor(id, options = {}) { | |||
| if (!id || (typeof id === 'string' && !document.getElementById(id))) { | |||
| throw new Error('Viewer:the id is empty') | |||
| constructor(container, options = {}) { | |||
| if (!getParam('isInitialized')) { | |||
| throw new Error('please do the ready function') | |||
| } | |||
| this._delegate = Cesium.Viewer | |||
| ? new Cesium.Viewer(id, { | |||
| ...DEF_OPTS, | |||
| ...options, | |||
| }) | |||
| : new CesiumViewer(id, { | |||
| ...DEF_OPTS, | |||
| ...options, | |||
| }) // Initialize the viewer | |||
| if ( | |||
| !container || | |||
| (typeof container === 'string' && !document.getElementById(container)) | |||
| ) { | |||
| throw new Error('Viewer: the container is empty') | |||
| } | |||
| if (container instanceof HTMLElement) { | |||
| throw new Error('Viewer: not support the type container') | |||
| } | |||
| if (typeof container === 'string') { | |||
| const baseUrl = getParam('baseUrl') | |||
| baseUrl && Cesium.buildModuleUrl.setBaseUrl(baseUrl) // Initialize the Cesium_BASE_URL | |||
| } | |||
| this._delegate = | |||
| typeof container !== 'string' | |||
| ? container | |||
| : new CesiumViewer(container, { | |||
| ...DEF_OPTS, | |||
| ...options, | |||
| }) // Initialize the viewer | |||
| /** | |||
| * Registers events | |||
| @@ -52,13 +66,17 @@ class Viewer { | |||
| this._widgetContainer = DomUtil.create( | |||
| 'div', | |||
| 'viewer-widgets', | |||
| typeof id === 'string' ? document.getElementById(id) : id | |||
| typeof container === 'string' | |||
| ? document.getElementById(container) | |||
| : this._delegate.container | |||
| ) //Register the widgets container | |||
| this._layerContainer = DomUtil.create( | |||
| 'div', | |||
| 'viewer-layers', | |||
| typeof id === 'string' ? document.getElementById(id) : id | |||
| typeof container === 'string' | |||
| ? document.getElementById(container) | |||
| : this._delegate.container | |||
| ) //Register the layers container | |||
| this._baseLayerPicker = new BaseLayerPicker({ | |||
| @@ -2,12 +2,12 @@ | |||
| * @Author : Caven Chen | |||
| */ | |||
| import { getLib } from '../global-api/lib-utils.js' | |||
| import { registerLib } from '../global-api' | |||
| export const Cesium = getLib('Cesium') | |||
| import { Cesium, Supercluster } from '@dvgis/dc-common' | |||
| export const turf = getLib('turf') | |||
| registerLib('Cesium', Cesium) | |||
| export const echarts = getLib('echarts') | |||
| registerLib('Supercluster', Supercluster) | |||
| export const Supercluster = getLib('Supercluster') | |||
| export { Cesium, Supercluster } | |||