iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vue2项目中如何封装echarts地图
  • 922
分享到

vue2项目中如何封装echarts地图

2023-06-29 13:06:29 922人浏览 泡泡鱼
摘要

这篇文章主要介绍了Vue2项目中如何封装echarts地图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue2项目中如何封装echarts地图文章都会有所收获,下面我们一起来看看吧。效果图先上个效果图吧,说明

这篇文章主要介绍了Vue2项目中如何封装echarts地图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue2项目中如何封装echarts地图文章都会有所收获,下面我们一起来看看吧。

    效果图

    先上个效果图吧,说明下实现的效果。

    • 广州区域地图

    • 自定义弹窗,显示选中地区的名称、区号,弹窗加了个小图片

    • 基本上图片、视频什么的,都可以在自定义弹窗上显示,这里只展示下自定义弹窗加图片的方式,视频同理的,不介绍了,有兴趣自己随便试试就好

    • 弹窗数据是从模拟接口取的

    vue2项目中如何封装echarts地图

    注意

    1、vue中echarts 5.x以下版本和5.x以上版本引入的区别

    x以下版本

    import echarts from 'echarts'

    x以上版本

    import * as echarts from 'echarts'

    2、记得在vue.config.js中开启运行时编译功能

    runtimeCompiler: true

    实现

    数据准备

    |-- public|-- data|-- 4401.JSON|-- mapdata.json|-- images|-- map-ic.png
    • 4401.json是广州区域的geojson数据,用来给echarts显示广州的区域地图

    • mapdata.json是模拟接口请求的假数据,自己随便自定义了,在获取数据后,看情况处理下传到封装好的echarts地图模块就行,这里模拟接口请求的知识可参考这里: vue本地模拟服务器请求mock数据

    • map-ic.png地图自定义弹窗用到的图片

    echarts地图模块封装

    |-- src    |-- components        |-- chart            |-- options    // 存放各种图表的option                |-- map    // 地图option                    |-- index.js

    具体代码如下:

    import * as echarts from 'echarts'const getSimpleMap = (jsonMap, data, config) => {  if (!echarts.getMap(jsonMap.mark)) {    echarts.reGISterMap(jsonMap.mark, jsonMap.json)  }  const defaultConfig = {    tooltip: {      // 窗口外框      trigger: 'item',      padding: 0,      borderWidth: 0,      borderColor: '#FFFFFF',      backgroundColor: '#FFFFFF',      fORMatter: (params) => {        const { data } = params        const str = `<div style="width:300px;height: 98px;box-shadow: 0px 4px 20px 0px rgba(0, 0, 0, 0.8);                    color: #fff;text-align:left;border-radius: 6px;">                    <div >                        <img  src="images/map-ic.png">${data.name}                    </div>                    <div >                        <div >                            <div >                                <div >区号:</div>                                <div >${data.hoverObj == null ? '' : data.hoverObj.adcode}</div>                            </div>                        </div>                    </div>                </div>`        return str      }    },    geo: {      map: jsonMap.mark,      type: 'map',      layoutCenter: ['50%', '50%'],      layoutSize: '150%',      zoom: 0.65,      roam: false,      itemStyle: {        normal: {          areaColor: 'rgba(201, 229, 255, 1)',          shadowColor: 'rgba(142, 201, 255, 1)',          shadowOffsetX: -5,          shadowOffsetY: 12        }      }    },    series: [      {        type: 'map',        map: jsonMap.mark, // 自定义扩展图表类型        zoom: 0.65, // 缩放        animationDuration: 1200,        itemStyle: {          // 地图样式          normal: {            borderColor: '#FFFFFF',            borderWidth: 3,            areaColor: 'rgba(201, 229, 255, 1)'          }        },        label: {          show: true,          color: '#666666',          fontSize: 12,          fontWeight: 400        },        emphasis: {          // 鼠标移入动态的时候显示的默认样式          label: {            show: true,            color: '#FFFFFF',            fontSize: 15,            fontWeight: 600          },          itemStyle: {            areaColor: 'rgba(102, 182, 255, 1)',            borderColor: '#FFFFFF',            borderWidth: 2          }        },        layoutCenter: ['50%', '50%'],        layoutSize: '150%',        data: data      }    ]  }  const opt = Object.assign({}, defaultConfig, config)  const { legend, tooltip, series, geo, grid } = opt  const chartOpt = {    grid,    legend,    tooltip,    geo,    series  }  return chartOpt}export default {  getSimpleMap}

    自定义弹窗主要是在tooltip的formatter里面实现,自定义好html弹窗,把params里要显示的数据显示到对应的地方就OK了。

    个人喜欢直接纯html实现好设计给的弹窗样式,然后直接复制到formatter里面。每次遇到不同的设计,就修改下formatter里面的html和匹配下要显示的数据就行了。这里可以进一步封装的,有兴趣的可以试试。

    页面调用

    <chart-view      class="map-view"      :chart-option="mapOpt"      height="100%"      @click="handleMapClick" />
    • :chart-option="mapOpt"这个是给封装的echarts地图模块的传参,接口数据要经过处理,具体看下一节

    • @click="handleMapClick"这里是点击地图时,对应区域的数据,用于有下一步的操作,例如地图下钻

    接口数据处理

    initMap(url) {    mapRequest(url).then((res) => {        const mapData = res.data        const jsonMap = { mark: this.mapName, json: mapData }        const data = mapData.features.map((item) => {          const { name, adcode } = item.properties          let hoverObj = {}          const objIndex = findElem(this.mapPopData, 'adcode', adcode)          if (objIndex !== -1) {            hoverObj = this.mapPopData[objIndex]          } else {            hoverObj = null          }          return {            name,            hoverObj: hoverObj          }        })        this.mapOpt = this.$eChartFn.getSimpleMap(jsonMap, data)    }).catch((err) => {        console.log(err, '加载地图失败')    })}

    这里对地图geojson数据和接口返回数据进行匹配处理,达到弹窗数据是对应地区数据的效果。

    地图geojson数据是必有adcode字段的,所以接口数据mapPopData最好也是加上此字段,用来匹配。 上面代码里的hoverObj是匹配好的每个区域的数据,最终形成数组data,通过以下代码给封装的echarts模块传参

    this.mapOpt = this.$eChartFn.getSimpleMap(jsonMap, data)

    具体代码可以参考echartMapTest文件夹里面的index.js文件

    代码总览

    涉及的文件如下(具体参考代码):

    |-- public|-- data|-- 4401.json|-- mapdata.json|-- images|-- map-ic.png|-- src|-- api|-- map.js    // 获取地图geojson数据、地图弹窗接口模拟数据    |-- components        |-- chart            |-- index.vue    // 图表单文件组件,供界面调用            |-- index.js    // 实现自动化导入options里的图表option            |-- options    // 存放各种图表的option                |-- map    // 地图option                    |-- index.js    |-- views        |-- echartMapTest    // 实例所在            |-- index.vue            |-- index.sCSS            |-- index.js|-- utils|---utils.js|-- main.js    // 全局引入echarts图表

    关于“vue2项目中如何封装echarts地图”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“vue2项目中如何封装echarts地图”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

    --结束END--

    本文标题: vue2项目中如何封装echarts地图

    本文链接: https://www.lsjlt.com/news/325176.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • vue2项目中如何封装echarts地图
      这篇文章主要介绍了vue2项目中如何封装echarts地图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue2项目中如何封装echarts地图文章都会有所收获,下面我们一起来看看吧。效果图先上个效果图吧,说明...
      99+
      2023-06-29
    • vue2项目如何优雅封装echarts地图
      这篇文章主要介绍“vue2项目如何优雅封装echarts地图”,在日常操作中,相信很多人在vue2项目如何优雅封装echarts地图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue2项目如何优雅封装ech...
      99+
      2023-06-29
    • vue2项目中封装echarts地图的优雅方法
      目录前言能学到的知识效果图注意1、vue中echarts 5.x以下版本和5.x以上版本引入的区别2、记得在vue.config.js中开启运行时编译功能实现数据准备echarts地...
      99+
      2024-04-02
    • vue项目中如何封装echarts
      本文小编为大家详细介绍“vue项目中如何封装echarts”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue项目中如何封装echarts”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。场景Echarts使用时,...
      99+
      2023-06-29
    • Vue2项目中对百度地图的封装使用详解
      目录需求知识点实现打点控件封装代码总览代码总结 百度地图的使用: vue项目,有个 vue-baidu-map 可以用,但是好久不更新了。 React项目,百度官...
      99+
      2024-04-02
    • vue项目如何雅的封装echarts
      这篇文章主要介绍“vue项目如何雅的封装echarts”,在日常操作中,相信很多人在vue项目如何雅的封装echarts问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue项目如何雅的封装echarts”的疑...
      99+
      2023-06-29
    • Vue项目中如何封装axios
      本文小编为大家详细介绍“Vue项目中如何封装axios”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue项目中如何封装axios”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、axios是什么axios 是...
      99+
      2023-06-30
    • vue项目中封装echarts的优雅方式分享
      目录场景需求代码总览实现components--chart--index.vuecomponents--chart--index.jscomponents--chart--optio...
      99+
      2024-04-02
    • websocket在vue2中如何封装使用
      这篇文章主要讲解了“websocket在vue2中如何封装使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“websocket在vue2中如何封装使用”吧!websocket在vue2中的封...
      99+
      2023-07-05
    • JS项目中如何对本地存储进行二次封装
      今天小编给大家分享一下JS项目中如何对本地存储进行二次封装的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言平时在开发的中,...
      99+
      2023-07-02
    • 如何在java项目组中进行封装
      今天就跟大家聊聊有关如何在java项目组中进行封装,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。java 中的封装介绍及使用方法在面向对象程式设计方法中,封装(英语:Encapsul...
      99+
      2023-05-31
      java ava
    • VUE项目中封装Echart折线图的方法
      本文实例为大家分享了VUE项目中封装Echart折线图的具体代码,供大家参考,具体内容如下 封装Echart折线图,可显示多条折线 1. 首先在项目中全局引入Echarts,main...
      99+
      2024-04-02
    • vue中如何封装echarts公共组件
      这篇文章主要讲解了“vue中如何封装echarts公共组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中如何封装echarts公共组件”吧!定义图表公共样式是为了统一同一网站各页面图...
      99+
      2023-06-30
    • vue-echarts如何实现图表组件封装详解
      目录背景:有哪些工具?怎么封装?总结背景: 需要大量使用图表的项目,为了提升开发效率,可以对图表类进行封装成组件,方便页面的搭建,也能进行统一管理维护,即使后面系统风格需要调整,调整...
      99+
      2024-04-02
    • vue项目中如何使用高德地图
      这篇文章主要介绍“vue项目中如何使用高德地图”,在日常操作中,相信很多人在vue项目中如何使用高德地图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue项目中如何使用高德地图”的疑惑有所帮助!接下来,请跟...
      99+
      2023-07-05
    • 项目中使用Typescript封装axios
      目录写在前面基础封装拦截器封装类拦截器实例拦截器接口拦截封装请求方法取消请求准备工作取消请求方法的添加与删除取消请求方法测试测试请求方法测试取消请求写在最后写在前面 虽然说Fetch...
      99+
      2024-04-02
    • 如何在vue项目中使用封装后的axios
      这篇文章给大家介绍如何在vue项目中使用封装后的axios,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为什么要使用VueVue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以创建可维护性和可测试...
      99+
      2023-06-06
    • vue之项目中如何封装loading加载效果
      目录vue封装loading加载效果Loading.vueloading.jsmain.js中导入并使用项目中使用Loading加载总结vue封装loading加载效果 使用两个文件...
      99+
      2022-12-08
      vue loading加载效果 vue封装 封装loading加载效果
    • vue如何导入echarts地图
      这篇文章主要为大家展示了“vue如何导入echarts地图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何导入echarts地图”这篇文章吧。导入方法:1、使用“npm install ...
      99+
      2023-06-25
    • 在Vue3项目中使用如何echarts问题
      目录一,创建 Vue3 项目并安装 echarts二,创建数据可视化组件(一)组件内容(二)使用组件(三)程序解释三,响应式刷新更多功能可扩展总结记得第一次使用 echarts 还是...
      99+
      2023-05-19
      Vue3使用echarts Vue3项目中echarts Vue3项目中使用echarts
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作