index.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <template>
  2. <div class="map" id="mapEchart" style="width: 100%; height: 100vh"></div>
  3. </template>
  4. <script lang="ts" setup>
  5. // 引入工具
  6. import geoJson from "@/assets/json/福州市v2_full.json"; //该文件路径改成自己项目中的文件路径即可
  7. import * as echarts from "echarts";
  8. import "echarts-gl"; //3D地图插件
  9. import { onMounted } from "vue";
  10. import img149 from "@/assets/img/about/149.png";
  11. var imageDom = document.createElement("img");
  12. imageDom.src = img149;
  13. // 定义echarts方法
  14. const chartMap = () => {
  15. var myChart = echarts.init(document.getElementById("mapEchart"));
  16. // 重点:不要遗漏这句代码!!
  17. echarts.registerMap("zhejiang", geoJson);
  18. // 图表配置项
  19. let option = {
  20. tooltip: {
  21. show: true,
  22. },
  23. //热力图配置项
  24. visualMap: [
  25. {
  26. type: "continuous",
  27. text: ["xxx"],
  28. calculable: true,
  29. max: 250,
  30. inPange: {
  31. color: ["#87aa66", "#eba438", "#d94d4c"],
  32. },
  33. },
  34. ],
  35. //3D地图配置项
  36. geo3D: {
  37. map: "zhejiang",
  38. roam: true,
  39. instancing:true,
  40. boxWidth:877,
  41. boxHeight:866,
  42. colorMaterial:{
  43. },
  44. itemStyle: {
  45. color: "#ff4400",
  46. opacity: 0.8,
  47. borderWidth: 0.4,
  48. borderColor: "#000",
  49. },
  50. viewControl: {
  51. autoRotate: false,
  52. autoRotateAfterStill: 3,
  53. distance: 120,
  54. minAlpha: 5, // 上下旋转的最小 alpha 值。即视角能旋转到达最上面的角度。[ default: 5 ]
  55. maxAlpha: 90, // 上下旋转的最大 alpha 值。即视角能旋转到达最下面的角度。[ default: 90 ]
  56. minBeta: -360, // 左右旋转的最小 beta 值。即视角能旋转到达最左的角度。[ default: -80 ]
  57. maxBeta: 360, // 左右旋转的最大 beta 值。即视角能旋转到达最右的角度。[ default: 80 ]
  58. animation: true, // 是否开启动画。[ default: true ]
  59. animationDurationUpdate: 1000, // 过渡动画的时长。[ default: 1000 ]
  60. animationEasingUpdate: "cubicInOut", // 过渡动画的缓动效果。[ default: cubicInOut ]
  61. },
  62. emphasis: {
  63. disabled: true, //是否可以被选中
  64. label: {
  65. //移入时的高亮文本
  66. show: true,
  67. color: "#333", //显示字体颜色变淡
  68. fontSize: 18, //显示字体变大
  69. },
  70. itemStyle: {
  71. color: "#ff7aff", //显示移入的区块变粉色
  72. },
  73. },
  74. label: {
  75. show: true,
  76. position: "top",
  77. color: "#111", //地图初始化区域字体颜色
  78. fontSize: 14,
  79. lineHeight: 16,
  80. },
  81. shading: "realistic",
  82. realisticMaterial:{
  83. detailTexture:img149
  84. },
  85. light: {
  86. //光照阴影
  87. main: {
  88. // color: "#fff", //光照颜色
  89. intensity: 1, //光照强度
  90. //shadowQuality: 'high', //阴影亮度
  91. shadow: true, //是否显示阴影
  92. shadowQuality: "medium", //阴影质量 ultra //阴影亮度
  93. alpha: 55,
  94. beta: 10,
  95. },
  96. ambient: {
  97. intensity: 0.7,
  98. },
  99. },
  100. },
  101. // series: [
  102. // //3D柱状图配置项
  103. // {
  104. // name: "xxx",
  105. // type: "bar3D",
  106. // show: false,
  107. // coordinateSystem: "geo3D",
  108. // barSize: 3,
  109. // shading: "lambert",
  110. // opacity: 1,
  111. // bevelSize: 0.2,
  112. // label: {
  113. // show: false,
  114. // formatter: "{a}",
  115. // },
  116. // //自定义的data数组 value中数组的含义:[杭州的经度or纬度,要展示的3d柱状图数值大小]
  117. // data: [
  118. // { name: "杭州", value: [120.161693, 30.280059, 643] },
  119. // { name: "温州", value: [120.705869, 28.001095, 98] },
  120. // { name: "湖州", value: [120.094566, 30.899015, 72] },
  121. // { name: "嘉兴", value: [120.762045, 30.750912, 131] },
  122. // { name: "绍兴", value: [120.586673, 30.036519, 116] },
  123. // { name: "丽水", value: [119.929503, 28.472979, 40] },
  124. // { name: "衢州", value: [118.880768, 28.941661, 22] },
  125. // { name: "金华", value: [119.654027, 29.084455, 156] },
  126. // { name: "台州", value: [121.426996, 28.662297, 110] },
  127. // { name: "宁波", value: [121.556686, 29.880177, 163] },
  128. // { name: "舟山", value: [122.214339, 29.991092, 20] },
  129. // ],
  130. // },
  131. // ],
  132. };
  133. myChart.setOption(option);
  134. //让可视化地图跟随浏览器大小缩放
  135. window.addEventListener("resize", () => {
  136. myChart.resize();
  137. });
  138. };
  139. onMounted(() => {
  140. // 挂载echart
  141. chartMap();
  142. });
  143. </script>
  144. <style lang="less" scoped></style>