0


利用Echarts+阿里云地图选择器绘制可交互的行政区划地图

前言

上周老板要我写个地图小工具,说要给其他员工用于制作PPT,提了几点需求:

1、输入城市名或省份名就能显示相应的地图

2、能够突出显示某地区

3、图片得高清、巨高清!

我打开了csdn给他东拼西凑出了这么个东西,感觉效果还行

效果图

0ab7e6b3478544478bcd97ac1099a16a.png

功能

输入省份或地级市的区划代码即可显示行政区域地图

可通过点击区域实现高亮并显示标签,再次点击可取消高亮,修改代码可调整底色及高亮色

右上角保存图片按钮可保存当前图片,修改代码可调整图片清晰度

资源

引入了百度echarts和jquery,均为在线版本,省去下载js文件,这样可以在任意一台联网的电脑上使用

Echarts : https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js

jquery: https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js

此外使用了阿里云的地图选择器:阿里云

代码

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>行政区划小工具</title>
  6. <!-- 引入 echarts.js 文件-->
  7. <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
  8. <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
  9. </head>
  10. <body>
  11. <div id="main" style="width: 1000px;height:800px;"></div>
  12. <script>
  13. function start()
  14. {
  15. city = document.getElementById("data").value;
  16. city_url = "https://geo.datav.aliyun.com/areas_v3/bound/" + String(city) +"_full.json";
  17. alert(city_url);
  18. };
  19. </script>
  20. <script type="text/javascript">
  21. var city=window.prompt("请输入省份或城市行政代码:");
  22. var city_url = "https://geo.datav.aliyun.com/areas_v3/bound/" + String(city) +"_full.json";
  23. chart = echarts.init(document.getElementById('main'));
  24. $.get(city_url,function (mapjson)
  25. {
  26. mapdata = mapjson.features.map((item) =>
  27. {
  28. return {
  29. name: item.properties.name,
  30. value : "0",
  31. label: {show:false},
  32. }
  33. });
  34. echarts.registerMap('citymap', mapjson);
  35. var option =
  36. {
  37. title: {
  38. text: '行政区划',
  39. x:'center',
  40. },
  41. toolbox: {
  42. show : true,
  43. feature : {
  44. myTool1: {
  45. show: true,
  46. title: "还原",
  47. onclick: () => {
  48. const chart = echarts.init(document.getElementById('main'));
  49. // 还原
  50. chart.clear();
  51. chart.setOption(option);
  52. // 传值
  53. this.$emit("init");
  54. console.log('click');
  55. },
  56. },
  57. dataView : {show: true},
  58. // restore : {show: true},
  59. padding: 5,
  60. saveAsImage : {
  61. pixelRatio: 10} //值越大分辨率越高
  62. }
  63. },
  64. visualMap: {
  65. show:false,
  66. left: 'right',
  67. categories: ['1','0'],
  68. inRange: {
  69. color: ['#004986','#DAE3F3']
  70. },
  71. text:['High','Low'], // 文本,默认为数值文本
  72. calculable: true
  73. },
  74. series:[
  75. {
  76. name:'地图',
  77. type:'map',
  78. map:'citymap',
  79. aspectScale: 1,
  80. itemStyle: {
  81. normal: {
  82. areaColor: '#afdfe4',
  83. borderColor: '#ffffff',
  84. borderWidth: 2
  85. },
  86. emphasis: {
  87. show: true,
  88. areaColor: '#2b4490'
  89. }
  90. },
  91. label: {
  92. normal: {
  93. show: false,
  94. textStyle: {
  95. color: "#ffffff",
  96. fontSize: 14,
  97. },
  98. },
  99. emphasis:{
  100. show: true,
  101. textStyle: {
  102. color: "#ffffff",
  103. fontSize: 14,
  104. },
  105. },
  106. },
  107. avoidLabelOverlap: true,
  108. data : mapdata,
  109. }
  110. ],
  111. };
  112. chart.setOption(option);
  113. chart.off('click')
  114. //地图点击事件---高亮
  115. chart.on('click', function(params){
  116. console.log(params);//此处写点击事件内容
  117. for(var i=0;i<mapdata.length;i++){
  118. // mapdata[i].value="0";
  119. // mapdata[i].label.show=false;
  120. if(params.name == mapdata[i].name){
  121. if (mapdata[i].value=="1"){
  122. mapdata[i].value="0";
  123. mapdata[i].label.show=false;
  124. }
  125. else{
  126. mapdata[i].value="1";
  127. mapdata[i].label.show=true;
  128. };
  129. }
  130. }
  131. chart.setOption(option);
  132. });
  133. });
  134. </script>
  135. </body>
  136. </html>

总结

参考了很多其他博主的代码,没有系统学过相关知识所以代码就不写注释误人子弟了,各位自行研究吧

如有侵权联系我删除

标签: echarts 前端 交互

本文转载自: https://blog.csdn.net/Achernar0208/article/details/125459523
版权归原作者 一口神探 所有, 如有侵权,请联系我们删除。

“利用Echarts+阿里云地图选择器绘制可交互的行政区划地图”的评论:

还没有评论