Vue echarts@4.x中国地图及AMap相关API使用详解

 更新时间:2023年12月13日 09:16:01   作者:安语未  
这篇文章主要为大家介绍了Vue使用echarts@4.x中国地图及AMap相关API使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、此 demo 实现的基本功能

中国地图的显示

地图点击下钻的功能

地图相关组件的使用,例 tooltip...

二、实现思路

初始使用下载本地的中国 geo 格式的 json 数据来绘制地图,点击某一区划(例:山东省)时,以点击的区划名称使用 AMap.DistrictSearch(opts) 构造函数查询下一级的区划信息(例:青岛市区划 id 为 370200)和业务数据整合处理;然后以点击的区划 id 用AMapUI中的组件DistrictExplorer相关方法获取下一级的地图 json 数据,继而绘制下一级地图(例:青岛市),再点下同...

三、引入 echarts

因为 echarts 在 5.0 及之后版本因 包体积优化和法规规定 取消了内置 json 地图数据,但仍然可以下载之前版本的依赖包来使用或下载曾经内置的地图数据。
若要引地图 json 数据,建议下载 echarts@4.9.0 ,这是 echarts 取消内置前的最新版本地图 json 数据,之前的版本地图数据比如 3.x,2.x 或多或少在地图边界和岛屿精度部分有所不准,亲测~

  • 通过 npm 方式下载 echarts
    $ npm i echarts@4.9.0
  • 引入 echarts
    import echarts from 'echarts'

相关 api 说明

  • echarts.registerMap
    echarts 方法:在 echarts 5.0 及之后版本取消了registerMap 此方法,所以最新 echarts(v5.2.2)版本引用会报错,所以这里我使用 v4.9.0 来注册地图。
// registerMap 接收两个参数
// 第一个是地图名称,china 为显示右下角南海诸岛,china1 则不显示右下角南海诸岛
// 第二个参数是绘制地图所需的json数据,在这里我下载了两个版本的json数据放在本地引用来使用,见下文
echarts.registerMap('china', chinaJson)
  • echarts.init
    echarts 方法:创建一个 ECharts 实例,返回 echartsInstance,不能在单个容器上初始化多个 ECharts 实例。
// 创建实例,接收三个参数
// 参数dom:实例容器,一般是一个具有高宽的div元素
// 参数theme:可选,应用的主题。可以是一个主题的配置对象
// 参数opts:可选,附加参数
this.myChart = echarts.init(dom, theme, opts)
  • echartsInstance.on
    实例方法:绑定事件处理函数(对应 off:解绑事件处理函数)
// 创建实例,接收三个参数
// 参数eventName:事件名称,全小写,例如'click','mousemove', 'legendselected'
// 参数query:可选,过滤条件,能够只在指定的组件或者元素上进行响应。可为 string 或者 Object
// 参数handler:事件处理函数

this.myChart.on(eventName, query, handler)
  • echartsInstance.setOption
    实例方法:设置图表实例的配置项以及数据,万能接口,所有参数和数据的修改都可以通过 setOption 完成,ECharts 会合并新的参数和数据,然后刷新图表。

配置项部分用法见下文五、echarts 部分配置项。官方配置项手册

// 参数 option:配置项

this.myChart.setOption(option)

四、AMap 相关 api 使用说明

  • 引入 AMap
<!-- html文件 -->
<!--引入高德地图JSAPI,key值是在AMap官方申请的哦,plugin是项目中用到的插件 -->
<script src="//webapi.amap.com/maps?v=2.0&key=bb36205e1ab4869979c6505a3cc362ee&plugin=AMap.DistrictSearch"></script>
<!--引入UI组件库(1.1版本) -->
<script src="//webapi.amap.com/ui/1.1/main.js"></script>
  • AMap.DistrictSearch(opt)
    插件,行政区查询服务,提供行政区相关信息。官方文档
/** 
参数opts:对象,实例时的配置
opts:{
  level: String, 关键字对应的行政区级别或商圈,可选值
  showbiz: Boolean, 是否显示商圈,默认值true
  extensions: String,是否返回行政区边界坐标点。默认值:base,不返回行政区边界坐标点,取值:all,返回完整行政区边界坐标点
  subdistrict:Number,默认1,显示下级行政区级数(行政区级别包括:国家、省/直辖市、市、区/县4个级别),商圈为区/县下一级。0不返回下一级区划,1返回下一级区划,2...,3...。
}
**/
const districtSearch = new AMap.DistrictSearch(opts)
// 根据关键字查询行政区或商圈信息 关键字支持:行政区名、citycode、adcode、商圈名,默认值:“全国”
districtSearch.search(obj.data.name, (status, result) => {
  console.log('加载区划信息', status, result)
})
  • DistrictExplorer
    加载绘制地图所需的 geo 格式的 json 数据。(行政区划浏览) 提供了全国范围内到区县一级的行政区划数据(含边界),同时提供一些辅助功能,比如区划面绘制、事件监听,以及快速判断经纬度所属的子级区划等。官方文档
// 使用
AMapUI.loadUI(['geo/DistrictExplorer'], (DistrictExplorer) => {
  let districtExplorer = new DistrictExplorer({
    eventSupport: true, // 打开事件支持
    map: null, // 地图对象实例。仅仅获取数据,不涉及地图相关的操作时,可以不设置
  })
  districtExplorer.loadAreaNode(obj.data.cityCode, (error, areaNode) => {
    if (error) return
    const mapJson = {}
    // 返回该区域中全部的子级区划Feature数组
    mapJson.features = areaNode.getSubFeatures() || []
    console.log('绘制地图所需的json数据', mapJson)
  })
})

五、echarts 部分配置项

const option = {
  visualMap: {
    // 视觉映射组件配置
    type: 'continuous', // 定义为连续型 visualMap
    show: true,
    bottom: '5%',
    left: '2%',
    text: ['高', '低'], // 两端的文本
    min: 0, // 指定 visualMapContinuous 组件的允许的最小值
    max: 100, // 指定 visualMapContinuous 组件的允许的最大值
    inRange: {
      // 定义 在选中范围中 的视觉元素
      color: ['#fff', '#A0CFFF', '#409EFF'], // 图元的颜色
    },
    calculable: true, // 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)
  },
  tooltip: {
    // 提示框组件
    trigger: 'item',
    formatter: function (item) {
      if (item.name == '南海诸岛') {
        return ''
      } else {
        return item.name + '<br>业务数据:' + (item.value || 0) + ' 个'
      }
    },
  },
  series: [
    // 系列列表。每个系列通过 type 决定自己的图表类型
    {
      type: 'map', // 系列列表。每个系列通过 type 决定自己的图表类型
      map: 'china', // 地图。china 为中国全国地图+右下角南海诸岛,china1 为中国全国地图
      name: '业务数据', // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列
      aspectScale: 0.75, // 用于 scale 地图的长宽比
      zoom: 1.2, // 地图缩放多少倍
      roam: true, // 允许缩放和平移
      mapType: '自定义地图',
      selectedMode: 'single', // 点击区域,会处于选中状态,single单选
      showLegendSymbol: false, // 在图例相应区域显示图例的颜色标识(系列标识的小圆点),存在 legend 组件时生效
      // center: [100.97, 35.71], // 初始化时的地图位置,可通过改变地图中心视角的经纬度来实现地图的平移
      itemStyle: {
        // 地图区域的多边形图形样式
        normal: {
          // 正常时的样式
          color: '#ccc', // 图形的颜色
          borderColor: '#303133', // 图形的描边颜色
          areaColor: '#d4f7fc', // 地图区域颜色
          borderWidth: 0.5, // 描边线宽。为 0 时无描边
          label: {
            // 设置地图区域名的文本样式,例如地名的字体大小等
            show: true, // 显示地区的文本名称,默认是不显示的,默认状态是hoverORclick才显示
            fontSize: 12,
            textStyle: {
              color: '#606266',
            },
          },
        },
        emphasis: {
          // 选中后的样式
          areaColor: '#4382F6',
          borderColor: '#fff',
          areaStyle: {
            color: '#fff',
          },
          label: {
            show: true,
            fontSize: 12,
            textStyle: {
              color: '#003767',
            },
          },
        },
      },
      data: this.mapData, // 地图系列中的数据内容数组。数组项可以为单个数值
    },
  ],
}

以上就是Vue echarts@4.x中国地图及AMap相关API使用详解的详细内容,更多关于Vue echarts中国地图的资料请关注脚本之家其它相关文章!

相关文章

  • vue如何通过image-conversion实现图片压缩详解

    vue如何通过image-conversion实现图片压缩详解

    在Vue项目中上传大图片时,可以通过image-conversion库压缩至指定大小,这篇文章主要介绍了vue如何通过image-conversion实现图片压缩的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • 如何理解Vue的render函数的具体用法

    如何理解Vue的render函数的具体用法

    本篇文章主要介绍了如何理解Vue的render函数的具体用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • vue2.0实现选项卡导航效果

    vue2.0实现选项卡导航效果

    这篇文章主要为大家详细介绍了vue2.0实现选项卡导航效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vue登录页面设置验证码input框的方法

    vue登录页面设置验证码input框的方法

    这篇文章主要为大家详细介绍了vue登录页面设置验证码input框的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 用Vue.js方法创建模板并使用多个模板合成

    用Vue.js方法创建模板并使用多个模板合成

    在本篇文章中小编给大家分享了关于如何使用Vue.js方法创建模板并使用多个模板合成的相关知识点内容,需要的朋友们学习下。
    2019-06-06
  • Vue+Element实现动态生成新表单并添加验证功能

    Vue+Element实现动态生成新表单并添加验证功能

    这篇文章主要介绍了Vue+Element实现动态生成新表单并添加验证功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Vue的props配置项详解

    Vue的props配置项详解

    这篇文章主要为大家详细介绍了Vue的props配置项,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 解决vite build打包后页面不能正常访问的情况

    解决vite build打包后页面不能正常访问的情况

    这篇文章主要介绍了解决Vite打包后直接使用浏览器打开,显示空白问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue中使用matomo进行访问流量统计的实现

    Vue中使用matomo进行访问流量统计的实现

    这篇文章主要介绍了Vue中使用matomo进行访问流量统计的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Vue页面监听键盘按键的方法总结

    Vue页面监听键盘按键的方法总结

    在Vue页面中,可以使用多种方法来监听键盘按键,这篇文章主要为大家整理了五种常用的方法,文中的示例代码讲解详细,需要的小伙伴可以参考下
    2023-10-10

最新评论