本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(11)

vue中Echarts实现伪3D地图

发布于2021-10-24 14:01     阅读(1264)     评论(0)     点赞(1)     收藏(0)


1.需求3d切面地图,颜色渐变,选中阴影,可切换地市,点击时展示地理数据,由于echarts 3d地图无法渐变,地图比例大小效果不好改成理想效果,所以通过伪3d方式实现。最终实现如下图:

2.代码

  1. <template>
  2. <div ref="myEchart" class="map-echart">
  3. </div>
  4. </template>
  5. <script>
  6. import echarts from 'echarts'
  7. export default {
  8. name: "map",
  9. data() {
  10. return{
  11. myChartMap: '',
  12. }
  13. },
  14. mounted() {
  15. const uploadedDataURL = require(`@/assets/json/map/provice/shandong.json`)
  16. echarts.registerMap('shandong', uploadedDataURL)
  17. this.myChartMap = echarts.init(this.$refs.myEchart)
  18. this.myChartMap.on('click', params=>{
  19. this.powerClick(params, 'echartClick')
  20. })
  21. this.initEcharts()
  22. }
  23. methods: {
  24. //画图
  25. initEcharts() {
  26. this.$nextTick(() => {
  27. const seriesData = [{
  28. name: '济南',
  29. value: [117.200, 36.791]
  30. },{
  31. name: '青岛',
  32. value: [120.253, 36.529]
  33. },{
  34. name: '莱芜',
  35. value: [117.676, 36.33]
  36. },{
  37. name: '潍坊',
  38. value: [119.09, 36.712]
  39. },{
  40. name: '枣庄',
  41. value: [117.46, 34.96]
  42. },{
  43. name: '东营',
  44. value: [118.66, 37.59]
  45. },{
  46. name: '德州',
  47. value: [116.619, 37.112]
  48. },{
  49. name: '烟台',
  50. value: [120.79, 37.101]
  51. },{
  52. name: '临沂',
  53. value: [118.286, 35.167]
  54. },{
  55. name: '日照',
  56. value: [119.150, 35.436]
  57. },{
  58. name: '济宁',
  59. value: [116.505, 35.385]
  60. },{
  61. name: '聊城',
  62. value: [115.878, 36.321]
  63. },{
  64. name: '淄博',
  65. value: [118.007648, 36.674939]
  66. },{
  67. name: '泰安',
  68. value: [116.800, 36.015]
  69. },{
  70. name: '威海',
  71. value: [122.100, 37.255691]
  72. },{
  73. name: '滨州',
  74. value: [117.850974, 37.693542]
  75. },{
  76. name: '菏泽',
  77. value: [115.700381, 35.220]
  78. }]
  79. const options = {
  80. // 悬浮窗
  81. tooltip: {
  82. trigger: 'item',
  83. formatter: function(point, params, dom, rect, size) {
  84. //这里可以自定义浮窗的dom节点及样式
  85. return `${params.name}: ${params.value || 0}`
  86. }
  87. },
  88. geo: [{
  89. //第一层需要操作点击展示的地图
  90. show: true,
  91. map: 'shandong',
  92. z: 1,//层级,zLevel优先级 > z
  93. aspectScale: 1,
  94. zoom: 1.15,//控制整体视图缩放
  95. roam: false,//控制是否可拖动
  96. label: {//初始标签样式
  97. show: true,
  98. color: '#fff',
  99. position: "inside",
  100. distance: 0,
  101. fontSize: 12
  102. },
  103. // 所有地图的区域颜色
  104. itemStyle: {
  105. normal: {
  106. color: {
  107. type: 'linear',
  108. x: 0,
  109. x2: 0,
  110. y: 0,
  111. y2: 1,
  112. colorStops: [
  113. { offset: 0, color: '#0843a9' },
  114. { offset: 0.9, color: '#001c80' }
  115. ]
  116. },
  117. borderWidth: 1,//分界线width
  118. borderColor: '#55bef2'
  119. }
  120. },
  121. emphasis: {//鼠标移入显示效果
  122. label:{
  123. show: true,//是否显示高亮
  124. textStyle: {
  125. color: '#fff',
  126. fontSize: 15 //高亮放大字体
  127. }
  128. },
  129. itemStyle: {
  130. color: {
  131. type: 'linear',
  132. x: 0,
  133. x2: 0,
  134. y: 0,
  135. y2: 1,
  136. colorStops: [
  137. { offset: 0, color: '#12F5D9' },
  138. { offset: 0.49, color: '#08BCEE' },
  139. { offset: 0.5, color: '#08BCEE' },
  140. { offset: 1, color: '#0194FD' }
  141. ]
  142. },
  143. shadowColor: 'rgba(255,248,74,0.8)',//阴影颜色
  144. shadowBlur: 3,//阴影大小
  145. shadowOffsetX: 10,//沿x轴宽度
  146. shadowOffsetY: 10,//沿y轴宽度
  147. borderCap: 'square'
  148. }
  149. },
  150. // 针对点击或特别区域做一些特别的样式
  151. // regions: [{
  152. // name: '山东省',
  153. // itemStyle: {
  154. // areaColor: 'yellow',
  155. // color: 'black',
  156. // borderColor: 'pink'
  157. // }
  158. // }]
  159. },{
  160. show: true,
  161. map: 'shandong',
  162. z: 0,
  163. top: 75,
  164. left: 100,
  165. aspectScale: 1,
  166. zoom: 1.15,
  167. roam: false,
  168. label: {
  169. normal: {
  170. show: false
  171. },
  172. emphasis: {
  173. show: false
  174. }
  175. },
  176. itemStyle: {
  177. normal: {
  178. areaColor: 'rgba(5, 32, 136, 1)',
  179. borderColor: 'transparent',
  180. borderWidth: 5
  181. },
  182. emphasis: {
  183. areaColor: 'rgba(5, 32, 136, 1)'
  184. }
  185. }
  186. }],
  187. // 数据
  188. series: [
  189. {
  190. type: 'scatter',
  191. itemStyle: {
  192. color: '#efe244',
  193. opacity: 1,
  194. shadowColor: 'rgba(255, 248, 74, 0.8)',
  195. shadowBlur: 10,
  196. shadowOffsetX: 1,
  197. shadowOffsetY: 1
  198. },
  199. symbol: 'diamond',
  200. coordinateSystem: 'geo',
  201. zlevel: 100,
  202. geoIndex: 0,
  203. top: 10,
  204. symbolSize: 10,
  205. data: seriesData,
  206. }
  207. ]
  208. }
  209. this.myChartMap.setOption(options)
  210. })
  211. },
  212. powerClick(params, fromEven){
  213. //...其他判断逻辑
  214. //点击时地图上色
  215. //tip:其他地方如果需要清除选中效果,需要置空regions
  216. //this.myChartMap.setOption({geo: {regions: []}})
  217. this.myChartMap.setOption({
  218. geo: {
  219. regions: [
  220. {
  221. name: params.name,
  222. value: 0,
  223. selected: true,
  224. itemStyle: {
  225. color: {
  226. type: 'linear',
  227. x: 0,
  228. x2: 0,
  229. y: 0,
  230. y2: 1,
  231. colorStops: [
  232. { offset: 0, color: '#12F5D9' },
  233. { offset: 0.49, color: '#08BCEE' },
  234. { offset: 0.5, color: '#08BCEE' },
  235. { offset: 1, color: '#0194FD' }
  236. ]
  237. },
  238. opacity: 1,
  239. borderWidth: 0,
  240. shadowColor: 'rgba(255,248,74,0.8)',//阴影颜色
  241. shadowBlur: 3,//阴影大小
  242. shadowOffsetX: 10,//沿x轴宽度
  243. shadowOffsetY: 10,//沿y轴宽度
  244. },
  245. label: {
  246. color: '#fff',
  247. fontSize: 15,
  248. shadowColor: 'rgba(255, 248, 74, 0.8)',
  249. shadowBlur: 10,
  250. shadowOffsetX: 1,
  251. shadowOffsetY: 1
  252. }
  253. }
  254. ]
  255. }
  256. })
  257. }
  258. }
  259. }
  260. </script>
  261. <style>
  262. .map-echart {
  263. height: 600px;
  264. width: 900px;
  265. }
  266. </style>

 3.地图json数据下载地址:

地图选择器

 

原文链接:https://blog.csdn.net/q_qman/article/details/120882259




所属网站分类: 技术文章 > 博客

作者:强哥你们辛苦了

链接:http://www.qianduanheidong.com/blog/article/211062/0acbb244c5dd0bbdcd7d/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)