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

一、此 demo 实现的基本功能

1.中国地图的显示
2.地图点击下钻的功能
3.地图相关组件的使用,例 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 或多或少在地图边界和岛屿精度部分有所不准,亲测~
1. 通过 npm 方式下载 echarts


$ npm i echarts@4.9.0

2. 引入 echarts


import echarts from 'echarts'

3. 相关 api 说明

  1. echarts.registerMap
    echarts 方法:在 echarts 5.0 及之后版本取消了registerMap 此方法,所以最新 echarts(v5.2.2)版本引用会报错,所以这里我使用 v4.9.0 来注册地图。
// registerMap 接收两个参数
// 第一个是地图名称,china 为显示右下角南海诸岛,china1 则不显示右下角南海诸岛
// 第二个参数是绘制地图所需的json数据,在这里我下载了两个版本的json数据放在本地引用来使用,见下文

echarts.registerMap('china', chinaJson)
  1. echarts.init
    echarts 方法:创建一个 ECharts 实例,返回 echartsInstance,不能在单个容器上初始化多个 ECharts 实例。

// 创建实例,接收三个参数
// 参数dom:实例容器,一般是一个具有高宽的div元素
// 参数theme:可选,应用的主题。可以是一个主题的配置对象
// 参数opts:可选,附加参数

this.myChart = echarts.init(dom, theme, opts)
  1. echartsInstance.on
    实例方法:绑定事件处理函数(对应 off:解绑事件处理函数)

// 创建实例,接收三个参数
// 参数eventName:事件名称,全小写,例如'click','mousemove', 'legendselected'
// 参数query:可选,过滤条件,能够只在指定的组件或者元素上进行响应。可为 string 或者 Object
// 参数handler:事件处理函数

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

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


// 参数 option:配置项

this.myChart.setOption(option)

四、AMap 相关 api 使用说明
1. 引入 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>

2. 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)
})

3. 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, // 地图系列中的数据内容数组。数组项可以为单个数值
    },
  ],
}

六、地图 json 数据说明及 demo 效果图

  1. 地图 json 数据说明比较#
    echarts@5.0 版本之前内置的 geo 地图 json 数据(这里特指v4.9.0)是不显示海南省下方的南海诸岛海域,所以地图较方正。

阿里datav的地图 json 数据是显示海南省下方的南海诸岛海域,所以地图偏高。

  1. demo 效果图#
    1.使用echarts@4.9.0内置的地图 json 数据绘制
    在这里插入图片描述
    2.使用阿里datav下载的地图 json 数据绘制
    在这里插入图片描述
    到这里,就全部介绍完毕了,希望对你有用的话,可以帮俺点点赞点点关注谢谢哈!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/240932.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PySpark大数据处理详细教程

欢迎各位数据爱好者&#xff01;今天&#xff0c;我很高兴与您分享我的最新博客&#xff0c;专注于探索 PySpark DataFrame 的强大功能。无论您是刚入门的数据分析师&#xff0c;还是寻求深入了解大数据技术的专业人士&#xff0c;这里都有丰富的知识和实用的技巧等着您。让我们…

Centos7 配置Git

随笔记录 目录 1&#xff0c; 新建用户 2. 给用户设置密码相关操作 3. 为新用户添加sudo 权限 4. 配置Git 4.1 配置Git 4.2 查看id_ras.pub 5, 登录Git 配置SSH 秘钥 6. Centos7 登录Git 7. clone 指定branch到本地 8. 将新代码复制到指定路径 9. 上传指定代码 …

2023年11月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2023年11月国产数据库大事件和重要产品发布消息。 11月国产数据库大事记 TOP10 11月国产数据库大事记&#xff08;时间线&#xff09; 11月1日消息&#xff0c;近日&#xff0c;由金仓数据库支撑的某大型运营商B域一级BOSS枢纽系统顺利升级上线。金仓数…

四川技能大赛——2023年四川网信人才技能大赛(网络安全管理员赛项)决赛

四川技能大赛——2023年四川网信人才技能大赛&#xff08;网络安全管理员赛项&#xff09;决赛 文章目录 四川技能大赛——2023年四川网信人才技能大赛&#xff08;网络安全管理员赛项&#xff09;决赛C1-比64少的bas - DONEC2-affine - DONEC3-简单的RSA - DONEM1-不要动我的f…

关于String.Format混合$符号格式化引发的问题

之前一个老项目是用string.Format()进行格式化的&#xff0c;.net 4.5之后的版本 引入 $"字符串" 格式化标识符&#xff0c; 如下代码&#xff1a; string barcode "1234567{#0.000}ABCDE";barcode "12345START{0:#000}ABCDE";try{string sFo…

【网络安全技术】电子邮件安全PGP,SMIME

一、PGP&#xff08;Pretty Good Privacy&#xff09; PGP是一种邮件加密手段&#xff0c;他在发邮件一方加密&#xff0c;然后发给发送方邮件服务器&#xff0c;发送方邮件服务器再发送给接收方邮件服务器&#xff0c;然后接收方再从接收方邮件服务器pop出来&#xff0c;这整…

vue实现自动打字效果(带光标效果)

代码介绍(其实就是通过字符串截取加定时拼接完成的,我相信有时间都能琢磨出来,来这里就是为了省事) 上vue页面代码: <template><div idApp><h2>{{text}}<span ref"fou" class"fousdis">{{_}}</span></h2></div>…

CentOS 7 部署frp穿透内网

本文将介绍如何在CentOS 7.9上部署frp&#xff0c;并通过示例展示如何配置和测试内网穿透。 文章目录 &#xff08;1&#xff09;引言&#xff08;2&#xff09;准备工作&#xff08;4&#xff09;frps服务器端配置&#xff08;5&#xff09;frpc客户端配置&#xff08;6&#…

工信部举行发布会 数字化产业推动元宇宙发展取得良好成效

据官方消息&#xff0c;工业和信息化部12日举行“发挥国家高新区作用 加快推进新型工业化”新闻发布会。 在数字化建设方面取得了良好的成绩&#xff1a; 一是数字经济加速发展。国家高新区着力推动人工智能、大数据、云计算、区块链和元宇宙等新产业新业态蓬勃发展&#xff…

1688订单详情接口使用指南:含代码实现获取订单信息

一、引言 随着电子商务的飞速发展&#xff0c;越来越多的企业开始通过1688平台进行采购和销售。为了更好地管理订单&#xff0c;提高客户满意度&#xff0c;许多企业选择使用1688订单详情接口来获取订单信息。本文将详细介绍如何使用1688订单详情接口&#xff0c;并提供示例代…

2023 年山东省职业院校技能大赛(高等职业教育) “信息安全管理与评估”样题

2023 年山东省职业院校技能大赛&#xff08;高等职业教育&#xff09; “信息安全管理与评估”样题 目录 任务 1 网络平台搭建&#xff08;50 分&#xff09; 任务 2 网络安全设备配置与防护&#xff08;250 分&#xff09; 模块二 网络安全事件响应、数字取证调查、应用程序安…

Guava的注解处理机制

第1章&#xff1a;引言 Guava不仅仅是一个工具库&#xff0c;它更像是Java程序员的瑞士军刀&#xff0c;提供了一系列强大的功能&#xff0c;从集合操作到函数式编程&#xff0c;再到今天咱们要深入探讨的——注解处理机制。 注解&#xff08;Annotations&#xff09;&#x…

14:00面试,14:08就出来了,问的问题有点变态。。。。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

uniapp+vite+ts+express踩坑总结

1 关于引入express包报 import express from "express"; ^^^^^^ SyntaxError: Cannot use import statement outside a module的问题。 解决方案&#xff1a; 在package.json中添加type&#xff1a;“module”选项 2 Response is a type and must be imported …

Visio中如何在字母上打出上波浪线

1. 如何打出这样的带有波浪线的文字 我们在使用visio中&#xff0c;有时候遇见了特殊符号&#xff0c;比如下方这个带有波浪线的X&#xff0c;如何在visio打出这样的带有波浪线的文字&#xff1f; 2. 操作 首先输入你想打上上波浪线的字母&#xff0c;如下图所示 光标一定…

jmeter里如何添加Referer

按照此实例添加即可。 例如&#xff1a;接口

Flutter实现Android拖动到垃圾桶删除效果-Draggable和DragTarget的详细讲解

文章目录 Draggable介绍构造函数参数说明使用示例 DragTarget 介绍构造函数参数说明使用示例 DragTarget 如何接收Draggable传递过来的数据&#xff1f; Draggable介绍 Draggable是Flutter框架中的一个小部件&#xff0c;用于支持用户通过手势拖动一个子部件。它是基于手势的一…

常州经开区大学生音乐节——常州首届校园乐队比赛

2023年12月9日下午&#xff0c;由江苏省文化馆指导、常州经开区社会事业局主办、常州柒号文化传播有限公司承办、百吉琴行协办的青春制“燥”大学生音乐节——常州首届校园乐队比赛&#xff0c;在常州经开区文化活动中心顺利举办。 常州经开区社会事业局副局长 方姣 为本次比赛…

光栅化渲染:顶点属性插值及透视校正

要使基础的光栅化器正常工作&#xff0c;我们需要做的就是知道如何将三角形投影到屏幕上&#xff0c;将投影坐标转换为光栅空间&#xff0c;然后光栅化三角形&#xff0c;并可能使用深度缓冲区来解决可见性问题。 这已经足以创建 3D 场景的图像&#xff0c;这些图像既是透视正确…

非标设计之中间继电器

目录 一、简介&#xff1a;二、结构和原理&#xff1a;三、中间继电器分类四、中间继电器作用&#xff1a;五、线路图&#xff1a; 一、简介&#xff1a; 在很多的家用电器上(如自动洗衣机、电炉加温等等)&#xff0c;为了防止电流过大而损伤电器&#xff0c;因此在电器上面安装…