当前位置:   article > 正文

Echarts 3D地图图表

echarts 3d地图

需求:实现如图所示的3D地图图表

 

(1)原本使用的highcharts没有3d地图的功能,搜索插件也没有可替代的方案,选择echarts理由是在地图方面百度拥有毋庸置疑的实力

ECharts3D地图(详细示例——附有具体注释)_GRAY_KEY的博客-CSDN博客

(2)通过代码可以轻易写出例子的效果,但是想要写特定区域的地图则需要该地区相对应的json文件,需要通查询对应地区的相关的json文件,详细步骤如链接。

DataV.GeoAtlas地理小工具系列

 

选择需要的区域,并下载json文件即可

(3)通过替换json文件即可展示该地区的3D地图,图片中在3D地图的基础上还有一个柱形图,然后找到了这个例子,又牵扯到一个维度的问题,是实现过程中最难理解的部分,主要原理就是用visualMap属性来连接两个series实现的图表

https://gallery.echartsjs.com/editor.html?c=xLIkpVNt4M

(4)各个地区板块之间有一个高度的差异,查到的是通过给regionHeight的大小来实现,但是实际上使用的时候没有效果,官方文档写的也是语焉不详,之后用height属性可以实现


2023更新

使用geo3D API实现3D地图

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"></script>
  9. <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
  10. <script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
  11. </head>
  12. <body>
  13. <div id="main" style="width: 100%; height: 800px;"></div>
  14. <script>
  15. var myChart = echarts.init(document.getElementById('main'));
  16. // map.json查询 https://datav.aliyun.com/portal/school/atlas/area_selector 获取
  17. var uploadedDataURL = "map.json";
  18. myChart.showLoading();
  19. $.getJSON(uploadedDataURL, function(geoJson) {
  20. echarts.registerMap('map', geoJson);
  21. // 隐藏动画加载效果。
  22. myChart.hideLoading();
  23. myChart.setOption({
  24. backgroundColor: '#222222',
  25. geo3D: [{
  26. map: 'map',
  27. roam: true, //开启缩放
  28. label: {
  29. show: true
  30. },
  31. shading: 'realistic',
  32. regions: [
  33. {
  34. name: '南宁市',
  35. // 官方文档regionHeight无效,需配置height属性
  36. height: 8,
  37. itemStyle:{
  38. areaColor: 'skyBlue',
  39. color: 'skyBlue',
  40. borderColor: '#222222',
  41. borderWidth: 1,
  42. borderType: 'solid',
  43. },
  44. },
  45. {
  46. name: '防城港市',
  47. height: 12,
  48. itemStyle:{
  49. areaColor: 'orange',
  50. color: 'orange'
  51. },
  52. },
  53. {
  54. name: '柳州市',
  55. height: 8,
  56. itemStyle:{
  57. areaColor: 'yellow',
  58. color: 'yellow'
  59. },
  60. }
  61. ]
  62. }],
  63. series:[{
  64. type: 'bar3D',
  65. coordinateSystem: 'geo3D',
  66. data: [11,22,33,11,22,33,11,22,33],
  67. barSize: 0.1,
  68. minHeight: 0.2,
  69. silent: true,
  70. itemStyle: {
  71. color: 'orange'
  72. // opacity: 0.8
  73. }
  74. }]
  75. })
  76. });
  77. </script>
  78. </body>
  79. </html>

需要在地图中加入柱状图,在series中配置柱状图即可

  1. series:[{
  2. type: 'bar3D',
  3. coordinateSystem: 'geo3D',
  4. data: [
  5. {name: "南宁市", value: [108.320004,22.82402, 111], itemStyle: {color:'skyBlue'}},
  6. {name: "防城港市", value: [108.345478,21.614631, 222], itemStyle: {color:'orange'}},
  7. {name: "柳州市", value: [109.411703,24.314617, 88], itemStyle: {color:'orange'}},
  8. ],
  9. barSize: 1,
  10. // 注意:如果配置了区域的高度,minHeight需要高过配置的高度,不然出不了柱状图
  11. minHeight: 1,
  12. silent: true,
  13. itemStyle: {
  14. color: 'green'
  15. }
  16. }]

完整代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"></script>
  9. <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
  10. <script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
  11. </head>
  12. <body>
  13. <div id="main" style="width: 100%; height: 800px;"></div>
  14. <script>
  15. var myChart = echarts.init(document.getElementById('main'));
  16. // map.json查询 https://datav.aliyun.com/portal/school/atlas/area_selector 获取
  17. var uploadedDataURL = "map.json";
  18. myChart.showLoading();
  19. $.getJSON(uploadedDataURL, function(geoJson) {
  20. echarts.registerMap('map', geoJson);
  21. // 隐藏动画加载效果。
  22. myChart.hideLoading();
  23. myChart.setOption({
  24. backgroundColor: '#222222',
  25. geo3D: [{
  26. map: 'map',
  27. roam: true, //开启缩放
  28. label: {
  29. show: true
  30. },
  31. shading: 'realistic',
  32. regions: [
  33. {
  34. name: '南宁市',
  35. // 官方文档regionHeight无效,需配置height属性
  36. height: 8,
  37. itemStyle:{
  38. areaColor: 'skyBlue',
  39. color: 'skyBlue',
  40. borderColor: '#222222',
  41. borderWidth: 1,
  42. borderType: 'solid',
  43. },
  44. },
  45. {
  46. name: '防城港市',
  47. height: 12,
  48. itemStyle:{
  49. areaColor: 'orange',
  50. color: 'orange'
  51. },
  52. },
  53. {
  54. name: '柳州市',
  55. height: 8,
  56. itemStyle:{
  57. areaColor: 'yellow',
  58. color: 'yellow'
  59. },
  60. }
  61. ]
  62. }],
  63. series:[{
  64. type: 'bar3D',
  65. coordinateSystem: 'geo3D',
  66. data: [
  67. {name: "南宁市", value: [108.320004,22.82402, 111], itemStyle: {color:'skyBlue'}},
  68. {name: "防城港市", value: [108.345478,21.614631, 222], itemStyle: {color:'orange'}},
  69. {name: "柳州市", value: [109.411703,24.314617, 88], itemStyle: {color:'orange'}},
  70. ],
  71. barSize: 1,
  72. minHeight: 20,
  73. silent: true,
  74. itemStyle: {
  75. color: 'green'
  76. // opacity: 0.8
  77. }
  78. }]
  79. })
  80. });
  81. </script>
  82. </body>
  83. </html>

最终效果

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/82958
推荐阅读
相关标签
  

闽ICP备14008679号