0HL_m30_echarts_sandian3.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" />
  6. <meta name="author" content="火星科技 http://mars3d.cn " />
  7. <meta name="apple-touch-fullscreen" content="yes" />
  8. <meta name="apple-mobile-web-app-capable" content="yes" />
  9. <meta name="apple-mobile-web-app-status-bar-style" content="black" />
  10. <meta name="format-detection" content="telephone=no" />
  11. <meta name="x5-fullscreen" content="true" />
  12. <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
  13. <!-- 标题及搜索关键字 -->
  14. <meta name="keywords" content="火星科技,cesium,3D,GIS,marsgis,三维,地球,地图,开发,框架,系统,示例,资料,模型,离线,外包,合肥,安徽,中国" />
  15. <meta
  16. name="description"
  17. content="火星科技 合肥火星 合肥火星科技 合肥火星科技有限公司 leaflet leaflet框架 leaflet开发 cesium cesium开发 cesium框架 三维 地球 模型 gis marsgis 地图离线 地图开发 地图框架 地图外包 框架 开发 外包 地图离线 二维地图 三维地图 全景漫游 地理信息系统 云GIS 三维GIS GIS平台 WebGIS"
  18. />
  19. <link rel="shortcut icon" type="image/x-icon" href="" />
  20. <title>态势标号展示</title>
  21. <!--第三方lib-->
  22. <script
  23. type="text/javascript"
  24. src="../lib/include-lib.js"
  25. libpath="../lib/"
  26. include="jquery,font-awesome,bootstrap,bootstrap-checkbox,layer,haoutil,turf,mars3d,mars3d-echarts"
  27. ></script>
  28. <link href="css/style.css" rel="stylesheet" />
  29. </head>
  30. <body class="dark">
  31. <!--加载前进行操作提示,优化用户体验-->
  32. <div id="mask" class="signmask" onclick="removeMask()"></div>
  33. <div id="mars3dContainer" class="mars3d-container"></div>
  34. <!-- 面板 -->
  35. <div class="infoview">
  36. <div class="checkbox checkbox-primary checkbox-inline">
  37. <input id="chkPointerEvents" class="styled" type="checkbox" />
  38. <label for="chkPointerEvents"> 启用Echars交互 </label>
  39. </div>
  40. </div>
  41. <script src="./js/common.js"></script>
  42. <script type="text/javascript">
  43. "use script"; //开发环境建议开启严格模式
  44. var map;
  45. function initMap(options) {
  46. //合并属性参数,可覆盖config.json中的对应配置
  47. var mapOptions = mars3d.Util.merge(options, {
  48. scene: {
  49. center: { lat: 13.474941, lng: 117.364073, alt: 2774097, heading: 6, pitch: -62 },
  50. },
  51. });
  52. //创建三维地球场景
  53. map = new mars3d.Map("mars3dContainer", mapOptions);
  54. //创建Echarts图层
  55. createEchartsLayer();
  56. }
  57. function createEchartsLayer() {
  58. var options = getEchartsOption();
  59. options.clampToGround = true; //计算贴地高度
  60. options.pointerEvents = $("#chkPointerEvents").is(":checked");
  61. var echartsLayer = new mars3d.layer.EchartsLayer(options);
  62. map.addLayer(echartsLayer);
  63. $("#chkPointerEvents").change(function () {
  64. var val = $(this).is(":checked");
  65. echartsLayer.pointerEvents = val;
  66. });
  67. $(window).resize(function () {
  68. echartsLayer.resize();
  69. });
  70. }
  71. function getEchartsOption() {
  72. var data = [
  73. {
  74. name: "上海",
  75. value: 19780,
  76. },
  77. {
  78. name: "珠海",
  79. value: 2186,
  80. },
  81. {
  82. name: "三亚",
  83. value: 1135,
  84. },
  85. {
  86. name: "惠州",
  87. value: 1973,
  88. },
  89. {
  90. name: "海口",
  91. value: 2568,
  92. },
  93. {
  94. name: "合肥",
  95. value: 4039,
  96. },
  97. {
  98. name: "南京",
  99. value: 6959,
  100. },
  101. {
  102. name: "杭州",
  103. value: 5632,
  104. },
  105. {
  106. name: "苏州",
  107. value: 6707,
  108. },
  109. {
  110. name: "无锡",
  111. value: 3393,
  112. },
  113. {
  114. name: "昆山",
  115. value: 1894,
  116. },
  117. {
  118. name: "广州",
  119. value: 15769,
  120. },
  121. {
  122. name: "深圳",
  123. value: 8259,
  124. },
  125. {
  126. name: "佛山",
  127. value: 5741,
  128. },
  129. {
  130. name: "东莞",
  131. value: 3030,
  132. },
  133. {
  134. name: "福州",
  135. value: 4542,
  136. },
  137. {
  138. name: "厦门",
  139. value: 3329,
  140. },
  141. {
  142. name: "南宁",
  143. value: 3157,
  144. },
  145. {
  146. name: "郑州",
  147. value: 6690,
  148. },
  149. {
  150. name: "武汉",
  151. value: 8678,
  152. },
  153. {
  154. name: "长沙",
  155. value: 5303,
  156. },
  157. {
  158. name: "南昌",
  159. value: 3025,
  160. },
  161. {
  162. name: "北京",
  163. value: 20259,
  164. },
  165. {
  166. name: "长春",
  167. value: 3016,
  168. },
  169. {
  170. name: "大连",
  171. value: 3202,
  172. },
  173. {
  174. name: "沈阳",
  175. value: 4540,
  176. },
  177. {
  178. name: "哈尔滨",
  179. value: 3141,
  180. },
  181. {
  182. name: "天津",
  183. value: 8626,
  184. },
  185. {
  186. name: "济南",
  187. value: 4361,
  188. },
  189. {
  190. name: "青岛",
  191. value: 6667,
  192. },
  193. {
  194. name: "太原",
  195. value: 4080,
  196. },
  197. {
  198. name: "石家庄",
  199. value: 6137,
  200. },
  201. {
  202. name: "西安",
  203. value: 6991,
  204. },
  205. {
  206. name: "成都",
  207. value: 13873,
  208. },
  209. {
  210. name: "重庆",
  211. value: 13283,
  212. },
  213. {
  214. name: "昆明",
  215. value: 4633,
  216. },
  217. ];
  218. var geoCoordMap = {
  219. 上海: [121.48, 31.22],
  220. 珠海: [113.52, 22.3],
  221. 三亚: [109.31, 18.14],
  222. 惠州: [114.4, 23.09],
  223. 海口: [110.35, 20.02],
  224. 合肥: [117.27, 31.86],
  225. 南京: [118.78, 32.04],
  226. 杭州: [120.19, 30.26],
  227. 苏州: [120.62, 31.32],
  228. 无锡: [120.29, 31.59],
  229. 昆山: [120.95, 31.39],
  230. 广州: [113.23, 23.16],
  231. 深圳: [114.07, 22.62],
  232. 佛山: [113.11, 23.05],
  233. 东莞: [113.75, 23.04],
  234. 福州: [119.3, 26.08],
  235. 厦门: [118.1, 24.46],
  236. 南宁: [108.33, 22.84],
  237. 郑州: [113.65, 34.76],
  238. 武汉: [114.31, 30.52],
  239. 长沙: [113, 28.21],
  240. 南昌: [115.89, 28.68],
  241. 北京: [116.46, 39.92],
  242. 长春: [125.35, 43.88],
  243. 大连: [121.62, 38.92],
  244. 沈阳: [123.38, 41.8],
  245. 哈尔滨: [126.63, 45.75],
  246. 天津: [117.2, 39.13],
  247. 济南: [117, 36.65],
  248. 青岛: [120.33, 36.07],
  249. 太原: [112.53, 37.87],
  250. 石家庄: [114.48, 38.03],
  251. 西安: [108.95, 34.27],
  252. 成都: [104.06, 30.67],
  253. 重庆: [106.54, 29.59],
  254. 昆明: [102.73, 25.04],
  255. };
  256. // 在echart图表中展示图点
  257. var convertData = function (data) {
  258. var res = [];
  259. for (var i = 0; i < data.length; i++) {
  260. var geoCoord = geoCoordMap[data[i].name];
  261. if (geoCoord) {
  262. res.push({
  263. name: data[i].name,
  264. value: geoCoord.concat(data[i].value),
  265. });
  266. }
  267. }
  268. return res;
  269. };
  270. /*var convertedData = [
  271. convertData(data),
  272. convertData(
  273. data
  274. .sort(function (a, b) {
  275. return b.value - a.value;
  276. })
  277. .slice(0, 6)
  278. ),
  279. ];*/
  280. // 图表的数字从大到小向下排序
  281. data.sort(function (a, b) {
  282. return a.value - b.value;
  283. });
  284. var categoryData = [];
  285. var barData = [];
  286. var sum = 0;
  287. var count = data.length;
  288. for (var i = 0; i < count; i++) {
  289. categoryData.push(data[i].name);
  290. barData.push(data[i].value);
  291. sum += data[i].value;
  292. }
  293. // console.log(categoryData);
  294. // console.log(sum + " " + count);
  295. var option = {
  296. animation: false,
  297. backgroundColor: "rgba(17, 19, 42, 0.3)",
  298. title: [
  299. {
  300. text: "散点图态势",
  301. subtext: "san dian tu taishi",
  302. left: "center",
  303. textStyle: {
  304. color: "#fff",
  305. },
  306. },
  307. {
  308. id: "statistic",
  309. text: count ? "平均: " + parseInt((sum / count).toFixed(4)) : "",
  310. right: 120,
  311. top: 40,
  312. width: 100,
  313. textStyle: {
  314. color: "#fff",
  315. fontSize: 16,
  316. },
  317. },
  318. ],
  319. tooltip: {
  320. trigger: "item",
  321. },
  322. grid: {
  323. right: 40,
  324. top: 100,
  325. bottom: 40,
  326. width: "30%",
  327. },
  328. xAxis: {
  329. type: "value",
  330. scale: true,
  331. position: "top",
  332. boundaryGap: false,
  333. splitLine: {
  334. show: false,
  335. },
  336. axisLine: {
  337. show: false,
  338. },
  339. axisTick: {
  340. show: false,
  341. },
  342. axisLabel: {
  343. margin: 2,
  344. textStyle: {
  345. color: "#aaa",
  346. },
  347. },
  348. },
  349. yAxis: {
  350. type: "category",
  351. nameGap: 16,
  352. axisLine: {
  353. show: true,
  354. lineStyle: {
  355. color: "#ddd",
  356. },
  357. },
  358. axisTick: {
  359. show: false,
  360. lineStyle: {
  361. color: "#ddd",
  362. },
  363. },
  364. axisLabel: {
  365. interval: 0,
  366. textStyle: {
  367. color: "#ddd",
  368. },
  369. },
  370. data: categoryData,
  371. },
  372. series: [
  373. {
  374. // 散点图
  375. type: "scatter",
  376. coordinateSystem: "mars3dMap",
  377. data: convertData(data),
  378. symbolSize: function (val) {
  379. var size = (val[2] / 500) * 1.5;
  380. return Math.max(size, 8);
  381. },
  382. label: {
  383. normal: {
  384. formatter: "{b}",
  385. position: "right",
  386. show: false,
  387. },
  388. emphasis: {
  389. show: true,
  390. },
  391. },
  392. itemStyle: {
  393. normal: {
  394. color: "#FF8C00",
  395. position: "right",
  396. show: true,
  397. },
  398. },
  399. },
  400. {
  401. // 特效散点图
  402. type: "effectScatter",
  403. coordinateSystem: "mars3dMap",
  404. data: convertData(data),
  405. symbolSize: function (val) {
  406. var size = val[2] / 500;
  407. return Math.max(size, 8);
  408. },
  409. showEffectOn: "render",
  410. rippleEffect: {
  411. brushType: "stroke",
  412. },
  413. hoverAnimation: true,
  414. label: {
  415. normal: {
  416. formatter: "{b}",
  417. position: "right",
  418. show: true,
  419. },
  420. },
  421. itemStyle: {
  422. normal: {
  423. color: "#f4e925",
  424. shadowBlur: 50,
  425. shadowColor: "#EE0000",
  426. },
  427. },
  428. zlevel: 1,
  429. },
  430. {
  431. id: "bar",
  432. zlevel: 2,
  433. type: "bar",
  434. symbol: "none",
  435. itemStyle: {
  436. normal: {
  437. color: "#ddb926",
  438. },
  439. },
  440. data: data,
  441. },
  442. ],
  443. };
  444. return option;
  445. }
  446. </script>
  447. </body>
  448. </html>