关键词搜索

源码搜索 ×
×

Web前端笔记-vue cli中使用echarts加载geo地图

发布2020-06-08浏览2524次

详情内容

效果是这样的:

此处是使用echarts加载geo地图。

这里简单说下逻辑:

首先npm下个包:

npm install echarts

然后用个vue组件封装下。

如下代码:

  1. <template>
  2. <div id="leftDownGeoGra" style="width: 100%;height: 100%"></div>
  3. </template>
  4. <script>
  5. import 'echarts/map/js/china'
  6. export default {
  7. mounted(){
  8. this.drawPie();
  9. },
  10. methods: {
  11. drawPie(){
  12. let myChart = this.$echarts.init(document.getElementById('leftDownGeoGra'));
  13. // 指定图表的配置项和数据
  14. let data = [
  15. {name: '南京', value: 279}
  16. ];
  17. let geoCoordMap = {
  18. '海门': [121.15, 31.89],
  19. '鄂尔多斯': [109.781327, 39.608266],
  20. '招远': [120.38, 37.35],
  21. '舟山': [122.207216, 29.985295],
  22. '齐齐哈尔': [123.97, 47.33],
  23. '盐城': [120.13, 33.38],
  24. '赤峰': [118.87, 42.28],
  25. '青岛': [120.33, 36.07],
  26. '乳山': [121.52, 36.89],
  27. '金昌': [102.188043, 38.520089],
  28. '泉州': [118.58, 24.93],
  29. '莱西': [120.53, 36.86],
  30. '日照': [119.46, 35.42],
  31. '胶南': [119.97, 35.88],
  32. '南通': [121.05, 32.08],
  33. '拉萨': [91.11, 29.97],
  34. '云浮': [112.02, 22.93],
  35. '梅州': [116.1, 24.55],
  36. '文登': [122.05, 37.2],
  37. '上海': [121.48, 31.22],
  38. '攀枝花': [101.718637, 26.582347],
  39. '威海': [122.1, 37.5],
  40. '承德': [117.93, 40.97],
  41. '厦门': [118.1, 24.46],
  42. '汕尾': [115.375279, 22.786211],
  43. '潮州': [116.63, 23.68],
  44. '丹东': [124.37, 40.13],
  45. '太仓': [121.1, 31.45],
  46. '曲靖': [103.79, 25.51],
  47. '烟台': [121.39, 37.52],
  48. '福州': [119.3, 26.08],
  49. '瓦房店': [121.979603, 39.627114],
  50. '即墨': [120.45, 36.38],
  51. '抚顺': [123.97, 41.97],
  52. '玉溪': [102.52, 24.35],
  53. '张家口': [114.87, 40.82],
  54. '阳泉': [113.57, 37.85],
  55. '莱州': [119.942327, 37.177017],
  56. '湖州': [120.1, 30.86],
  57. '汕头': [116.69, 23.39],
  58. '昆山': [120.95, 31.39],
  59. '宁波': [121.56, 29.86],
  60. '湛江': [110.359377, 21.270708],
  61. '揭阳': [116.35, 23.55],
  62. '荣成': [122.41, 37.16],
  63. '连云港': [119.16, 34.59],
  64. '葫芦岛': [120.836932, 40.711052],
  65. '常熟': [120.74, 31.64],
  66. '东莞': [113.75, 23.04],
  67. '河源': [114.68, 23.73],
  68. '淮安': [119.15, 33.5],
  69. '泰州': [119.9, 32.49],
  70. '南宁': [108.33, 22.84],
  71. '营口': [122.18, 40.65],
  72. '惠州': [114.4, 23.09],
  73. '江阴': [120.26, 31.91],
  74. '蓬莱': [120.75, 37.8],
  75. '韶关': [113.62, 24.84],
  76. '嘉峪关': [98.289152, 39.77313],
  77. '广州': [113.23, 23.16],
  78. '延安': [109.47, 36.6],
  79. '太原': [112.53, 37.87],
  80. '清远': [113.01, 23.7],
  81. '中山': [113.38, 22.52],
  82. '昆明': [102.73, 25.04],
  83. '寿光': [118.73, 36.86],
  84. '盘锦': [122.070714, 41.119997],
  85. '长治': [113.08, 36.18],
  86. '深圳': [114.07, 22.62],
  87. '珠海': [113.52, 22.3],
  88. '宿迁': [118.3, 33.96],
  89. '咸阳': [108.72, 34.36],
  90. '铜川': [109.11, 35.09],
  91. '平度': [119.97, 36.77],
  92. '佛山': [113.11, 23.05],
  93. '海口': [110.35, 20.02],
  94. '江门': [113.06, 22.61],
  95. '章丘': [117.53, 36.72],
  96. '肇庆': [112.44, 23.05],
  97. '大连': [121.62, 38.92],
  98. '临汾': [111.5, 36.08],
  99. '吴江': [120.63, 31.16],
  100. '石嘴山': [106.39, 39.04],
  101. '沈阳': [123.38, 41.8],
  102. '苏州': [120.62, 31.32],
  103. '茂名': [110.88, 21.68],
  104. '嘉兴': [120.76, 30.77],
  105. '长春': [125.35, 43.88],
  106. '胶州': [120.03336, 36.264622],
  107. '银川': [106.27, 38.47],
  108. '张家港': [120.555821, 31.875428],
  109. '三门峡': [111.19, 34.76],
  110. '锦州': [121.15, 41.13],
  111. '南昌': [115.89, 28.68],
  112. '柳州': [109.4, 24.33],
  113. '三亚': [109.511909, 18.252847],
  114. '自贡': [104.778442, 29.33903],
  115. '吉林': [126.57, 43.87],
  116. '阳江': [111.95, 21.85],
  117. '泸州': [105.39, 28.91],
  118. '西宁': [101.74, 36.56],
  119. '宜宾': [104.56, 29.77],
  120. '呼和浩特': [111.65, 40.82],
  121. '成都': [104.06, 30.67],
  122. '大同': [113.3, 40.12],
  123. '镇江': [119.44, 32.2],
  124. '桂林': [110.28, 25.29],
  125. '张家界': [110.479191, 29.117096],
  126. '宜兴': [119.82, 31.36],
  127. '北海': [109.12, 21.49],
  128. '西安': [108.95, 34.27],
  129. '金坛': [119.56, 31.74],
  130. '东营': [118.49, 37.46],
  131. '牡丹江': [129.58, 44.6],
  132. '遵义': [106.9, 27.7],
  133. '绍兴': [120.58, 30.01],
  134. '扬州': [119.42, 32.39],
  135. '常州': [119.95, 31.79],
  136. '潍坊': [119.1, 36.62],
  137. '重庆': [106.54, 29.59],
  138. '台州': [121.420757, 28.656386],
  139. '南京': [118.78, 32.04],
  140. '滨州': [118.03, 37.36],
  141. '贵阳': [106.71, 26.57],
  142. '无锡': [120.29, 31.59],
  143. '本溪': [123.73, 41.3],
  144. '克拉玛依': [84.77, 45.59],
  145. '渭南': [109.5, 34.52],
  146. '马鞍山': [118.48, 31.56],
  147. '宝鸡': [107.15, 34.38],
  148. '焦作': [113.21, 35.24],
  149. '句容': [119.16, 31.95],
  150. '北京': [116.46, 39.92],
  151. '徐州': [117.2, 34.26],
  152. '衡水': [115.72, 37.72],
  153. '包头': [110, 40.58],
  154. '绵阳': [104.73, 31.48],
  155. '乌鲁木齐': [87.68, 43.77],
  156. '枣庄': [117.57, 34.86],
  157. '杭州': [120.19, 30.26],
  158. '淄博': [118.05, 36.78],
  159. '鞍山': [122.85, 41.12],
  160. '溧阳': [119.48, 31.43],
  161. '库尔勒': [86.06, 41.68],
  162. '安阳': [114.35, 36.1],
  163. '开封': [114.35, 34.79],
  164. '济南': [117, 36.65],
  165. '德阳': [104.37, 31.13],
  166. '温州': [120.65, 28.01],
  167. '九江': [115.97, 29.71],
  168. '邯郸': [114.47, 36.6],
  169. '临安': [119.72, 30.23],
  170. '兰州': [103.73, 36.03],
  171. '沧州': [116.83, 38.33],
  172. '临沂': [118.35, 35.05],
  173. '南充': [106.110698, 30.837793],
  174. '天津': [117.2, 39.13],
  175. '富阳': [119.95, 30.07],
  176. '泰安': [117.13, 36.18],
  177. '诸暨': [120.23, 29.71],
  178. '郑州': [113.65, 34.76],
  179. '哈尔滨': [126.63, 45.75],
  180. '聊城': [115.97, 36.45],
  181. '芜湖': [118.38, 31.33],
  182. '唐山': [118.02, 39.63],
  183. '平顶山': [113.29, 33.75],
  184. '邢台': [114.48, 37.05],
  185. '德州': [116.29, 37.45],
  186. '济宁': [116.59, 35.38],
  187. '荆州': [112.239741, 30.335165],
  188. '宜昌': [111.3, 30.7],
  189. '义乌': [120.06, 29.32],
  190. '丽水': [119.92, 28.45],
  191. '洛阳': [112.44, 34.7],
  192. '秦皇岛': [119.57, 39.95],
  193. '株洲': [113.16, 27.83],
  194. '石家庄': [114.48, 38.03],
  195. '莱芜': [117.67, 36.19],
  196. '常德': [111.69, 29.05],
  197. '保定': [115.48, 38.85],
  198. '湘潭': [112.91, 27.87],
  199. '金华': [119.64, 29.12],
  200. '岳阳': [113.09, 29.37],
  201. '长沙': [113, 28.21],
  202. '衢州': [118.88, 28.97],
  203. '廊坊': [116.7, 39.53],
  204. '菏泽': [115.480656, 35.23375],
  205. '合肥': [117.27, 31.86],
  206. '武汉': [114.31, 30.52],
  207. '大庆': [125.03, 46.58]
  208. };
  209. let convertData = function (data){
  210. var res = [];
  211. for (var i = 0; i < data.length; i++) {
  212. var geoCoord = geoCoordMap[data[i].name];
  213. if (geoCoord) {
  214. res.push({
  215. name: data[i].name,
  216. value: geoCoord.concat(data[i].value)
  217. });
  218. }
  219. }
  220. return res;
  221. };
  222. //配置
  223. let option = {
  224. tooltip: {
  225. trigger: 'item'
  226. },
  227. title: {
  228. text: '当前你的位置',
  229. left: 'center',
  230. textStyle:{
  231. color: 'white'
  232. }
  233. },
  234. geo: {
  235. map: 'china',
  236. label: {
  237. // 显示各个省份名称
  238. emphasis: {
  239. show: true,
  240. color: '#fff'
  241. }
  242. },
  243. roam: false,//禁止其放大缩小
  244. itemStyle: {
  245. normal: {
  246. areaColor: 'rgb(79, 163, 213)',
  247. borderColor: '#002097'
  248. },
  249. emphasis: {
  250. areaColor: '#293fff'
  251. }
  252. }
  253. },
  254. series: [
  255. {
  256. type: 'scatter',
  257. coordinateSystem: 'geo',
  258. data: convertData(data),
  259. label: {
  260. normal: {
  261. formatter: '{b}',
  262. position: 'right',
  263. show: false
  264. },
  265. emphasis: {
  266. show: true
  267. }
  268. },
  269. itemStyle: {
  270. normal: {
  271. color: '#ffffff'
  272. }
  273. }
  274. },
  275. {
  276. name: 'position',
  277. type: 'effectScatter',
  278. coordinateSystem: 'geo',
  279. data: convertData(data.sort(function (a, b) {
  280. return b.value - a.value;
  281. }).slice(0, 5)),
  282. symbolSize: function (val) {
  283. return val[2] / 10;
  284. },
  285. // 气泡特效
  286. showEffectOn: 'render',
  287. rippleEffect: {
  288. // 气泡动画样式
  289. brushType: 'stroke'
  290. },
  291. // 是否开启鼠标滑过的动画样式
  292. hoverAnimation: true,
  293. label: {
  294. normal: {
  295. formatter: '{b}',
  296. position: 'right',
  297. show: true
  298. }
  299. },
  300. itemStyle: {
  301. normal: {
  302. // 气泡颜色
  303. color: '#ffffff'
  304. }
  305. }
  306. }
  307. ]
  308. };
  309. // 使用刚指定的配置项和数据显示图表。
  310. myChart.setOption(option);
  311. window.addEventListener("resize", () => {
  312. myChart.resize();
  313. });
  314. }
  315. }
  316. }
  317. </script>
  318. <style>
  319. </style>

这里有个关键的地方:

需要导入map/js/china才行。不然

此处会报错。

 

 

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载