百度地图API : 使用百度地图的 api , 它能够在线联网展示地图, 百度地图需要申请 ak 矢量地图 : 可以离线展示地图, 需要开发者准备矢量地图数据 接下来的实现是通过矢量图的方式来实现的

基本使用

  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="../js/echarts.js"></script>
  9. <script src="../js/jquery.min.js"></script>
  10. </head>
  11. <body>
  12. <div style="width: 600px;height:400px"></div>
  13. <script>
  14. var mCharts = echarts.init(document.querySelector("div"))
  15. $.get('../json/map/china.json', function (chinaJson) {
  16. echarts.registerMap('chinaMap', chinaJson)
  17. var option = { geo: {type: 'map',
  18. // map是一个固定的值
  19. map: 'chinaMap',
  20. //chinaMap需要和registerMap中的第一个参数保持一致
  21. } };
  22. mCharts.setOption(option)
  23. })
  24. </script>
  25. </body>
  26. </html>

用vscode打开一定要使用本地服务器的方式 注意: 需要注意的是, 由于在代码中使用了 Ajax , 所以, 关于此文件的打开, 不能以 file 的协议打开, 应 该将其置于 HTTP 的服务之下方可正常展示地图

image.png
image.png

地图的常见配置

  • 缩放拖动: roam ```javascript var mCharts = echarts.init(document.querySelector(“div”))
    1. $.get('../json/map/china.json', function (chinaJson) {
    2. echarts.registerMap('chinaMap', chinaJson)
    3. var option = { geo: {type: 'map',
    4. // map是一个固定的值
    5. map: 'chinaMap',
    6. //chinaMap需要和registerMap中的第一个参数保持一致
    7. roam: true,
    8. // 运行使用鼠标进行拖动和缩放,此时鼠标可以拖动地图
    9. } };
    10. mCharts.setOption(option)
    11. })
  1. - **名称显示: label**
  2. ```javascript
  3. var mCharts = echarts.init(document.querySelector("div"))
  4. $.get('../json/map/china.json', function (chinaJson) {
  5. echarts.registerMap('chinaMap', chinaJson)
  6. var option = { geo: {type: 'map',
  7. // map是一个固定的值
  8. map: 'chinaMap',
  9. //chinaMap需要和registerMap中的第一个参数保持一致
  10. roam: true,
  11. // 运行使用鼠标进行拖动和缩放,此时鼠标可以拖动地图
  12. label: { show: true }
  13. //显示名称
  14. } };
  15. mCharts.setOption(option)
  16. })
  • 初始缩放比例: zoom
  • 地图中心点: center
    1. var mCharts = echarts.init(document.querySelector("div"))
    2. $.get('../json/map/china.json', function (chinaJson) {
    3. echarts.registerMap('chinaMap', chinaJson)
    4. var option = { geo: {type: 'map',
    5. // map是一个固定的值
    6. map: 'chinaMap',
    7. //chinaMap需要和registerMap中的第一个参数保持一致
    8. roam: true,
    9. // 运行使用鼠标进行拖动和缩放,此时鼠标可以拖动地图
    10. label: { show: true },
    11. //显示名称
    12. zoom: 0.9, // 地图的缩放比例, 大于1代表放大, 小于1代表缩小
    13. center: [87.617733, 43.792818] // 当前视角的中心点,用经纬度表示
    14. } };
    15. mCharts.setOption(option)
    image.png

    地图常见效果

    visualMap 是视觉映射组件, 和之前区域缩放 dataZoom 很类似, 可以做数据的过滤. 只不过 dataZoom 主要使用在直角坐标系的图表, 而 visualMap 主要使用在地图或者饼图中

  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="../js/echarts.js"></script>
  9. <script src="../js/jquery.min.js"></script>
  10. </head>
  11. <body>
  12. <div style="width: 600px;height:400px;border:1px solid red"></div>
  13. <script>
  14. var mCharts = echarts.init(document.querySelector("div"))
  15. $.get('../json/map/china.json',
  16. function (chinaJson) {
  17. echarts.registerMap('chinaMap', chinaJson)
  18. var airData = [{ name: '北京', value: 39.92 },
  19. { name: '天津', value: 39.13 }, { name: '上海', value: 31.22 },
  20. { name: '重庆', value: 66 }, { name: '河北', value: 147 },
  21. { name: '河南', value: 113 }, { name: '云南', value: 25.04 },
  22. { name: '辽宁', value: 50 }, { name: '黑龙江', value: 114 },
  23. { name: '湖南', value: 175 }, { name: '安徽', value: 117 },
  24. { name: '山 东', value: 92 }, { name: '新疆', value: 84 },
  25. { name: '江苏', value: 67 }, { name: '浙江', value: 84 },
  26. { name: '江西', value: 96 }, { name: '湖北', value: 273 },
  27. { name: '广西', value: 59 }, { name: '甘肃', value: 99 },
  28. { name: '山西', value: 39 }, { name: '内蒙古', value: 58 },
  29. { name: '陕西', value: 61 }, { name: '吉林', value: 51 },
  30. { name: '福建', value: 29 }, { name: '贵州', value: 71 },
  31. { name: '广东', value: 38 }, { name: '青海', value: 57 },
  32. { name: '西藏', value: 24 }, { name: '四川', value: 58 },
  33. { name: '宁夏', value: 52 }, { name: '海南', value: 54 },
  34. { name: '台湾', value: 88 }, { name: '香港', value: 66 },
  35. { name: '澳门', value: 77 }, { name: '南海诸岛', value: 55 }]
  36. var option = {
  37. geo: {
  38. type: 'map',
  39. map: 'chinaMap',
  40. roam: true,
  41. label: { show: true }
  42. },
  43. series: [{
  44. data: airData,
  45. geoIndex: 0,
  46. type: 'map'
  47. }],
  48. visualMap: {
  49. min: 0,
  50. // 最小值
  51. max: 300,
  52. // 最大值
  53. inRange: {
  54. color: ['white', 'red']
  55. // 颜色的范围
  56. },
  57. calculable: true
  58. // 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)
  59. }
  60. }
  61. mCharts.setOption(option)
  62. })
  63. </script>
  64. </body>
  65. </html>

image.png

散点图结合地图

  • 1.给 series 这个数组下增加新的对象
  • 2.准备好散点数据,设置给新对象的 data
  1. var scatterData = [
  2. {
  3. value: [117.283042, 31.86119] // 散点的坐标, 使用的是经纬度
  4. }
  5. ]
  • 3.配置新对象的 type

type:effectScatter 让散点图使用地图坐标系统 coordinateSystem: ‘geo’ 让涟漪的效果更加明显 rippleEffect: { scale: 10 }

  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="../js/echarts.js"></script>
  9. <script src="../js/jquery.min.js"></script>
  10. </head>
  11. <body>
  12. <div style="width: 600px;height:400px;border:1px solid red"></div>
  13. <script>
  14. var mCharts = echarts.init(document.querySelector("div"))
  15. $.get('../json/map/china.json',
  16. function (chinaJson) {
  17. echarts.registerMap('chinaMap', chinaJson)
  18. var airData = [{ name: '北京', value: 39.92 },
  19. { name: '天津', value: 39.13 }, { name: '上海', value: 31.22 },
  20. { name: '重庆', value: 66 }, { name: '河北', value: 147 },
  21. { name: '河南', value: 113 }, { name: '云南', value: 25.04 },
  22. { name: '辽宁', value: 50 }, { name: '黑龙江', value: 114 },
  23. { name: '湖南', value: 175 }, { name: '安徽', value: 117 },
  24. { name: '山 东', value: 92 }, { name: '新疆', value: 84 },
  25. { name: '江苏', value: 67 }, { name: '浙江', value: 84 },
  26. { name: '江西', value: 96 }, { name: '湖北', value: 273 },
  27. { name: '广西', value: 59 }, { name: '甘肃', value: 99 },
  28. { name: '山西', value: 39 }, { name: '内蒙古', value: 58 },
  29. { name: '陕西', value: 61 }, { name: '吉林', value: 51 },
  30. { name: '福建', value: 29 }, { name: '贵州', value: 71 },
  31. { name: '广东', value: 38 }, { name: '青海', value: 57 },
  32. { name: '西藏', value: 24 }, { name: '四川', value: 58 },
  33. { name: '宁夏', value: 52 }, { name: '海南', value: 54 },
  34. { name: '台湾', value: 88 }, { name: '香港', value: 66 },
  35. { name: '澳门', value: 77 }, { name: '南海诸岛', value: 55 }]
  36. var scatterData = [
  37. {
  38. value: [117.283042, 31.86119] // 散点的坐标, 使用的是经纬度
  39. }
  40. ]
  41. var option = {
  42. geo: {
  43. type: 'map',
  44. map: 'chinaMap',
  45. roam: true,
  46. label: { show: true }
  47. },
  48. series: [{
  49. data: airData,
  50. geoIndex: 0,
  51. type: 'map'
  52. },
  53. {
  54. data: scatterData,
  55. type: 'effectScatter',
  56. coordinateSystem: 'geo',
  57. rippleEffect: { scale: 10 }
  58. }
  59. ],
  60. visualMap: {
  61. min: 0,
  62. // 最小值
  63. max: 300,
  64. // 最大值
  65. inRange: {
  66. color: ['white', 'red']
  67. // 颜色的范围
  68. },
  69. calculable: true
  70. // 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)
  71. }
  72. }
  73. mCharts.setOption(option)
  74. })
  75. </script>
  76. </body>
  77. </html>

image.png