vue基于Echarts、百度地图MapVGL实现可视化大屏数据展示

一、布局

可视化大屏
常见的大屏数据展示布局,一般会将地图作为整个屏幕的背景,在地图上以九宫格布局展示各类数据图表。实现这一效果可以使地图的z-index=1,在地图上的图表等z-index>1,下面会详细描述这种设计该如何实现:
在这里插入图片描述

<div style="width:100%;height:100%">
<!--最外层div要设置宽、高为100%--><nav style="height: 58px;width: 100%;position: absolute;top: 0;left: 0;z-index: 20;"><!--顶部导航绝对定位,图层z-index=21,浮于地图上方--></nav><div style="position: absolute;width: 100%;height: calc(100% - 58px);top: 58px;left: 0;"><!--图表内容wrapper,使用绝对定位,使图表浮于地图上方,不设置图层地图可以监听到鼠标--><div style="position: relative;z-index: 20;"><!--图表card,采用栅格化布局,card--></div></div><div style="width: 100%; height: 100%;"><!--地图--></div>
</div>

二、Echarts图表自适应

  1. 图表div的宽度、高度不要写死,可以使用百分比
  2. echart图表本身提供了一个resize的函数,我们只需要监听页面的resize变化以后,去执行echarts的resize方法即可重绘canvas

加载图表的组件graph.vue

<template><div style="height: 100%;"><Spin fix v-show="loading"><Icon type="ios-loading" size=18 class="demo-spin-icon-load"></Icon><div>加载中...</div></Spin><div :id="id" :data="data" style="height: 100%;"></div></div>
</template>
<script>
//引入自定义主题rainbow.json
import rainbow from '../../assets/rainbow.json'
export default {props:["id","data"],data(){return{graph:null,loading:true,}},methods:{drawGraph(id,data){let _this = this;let myChart = document.getElementById(id);//自定义主题this.graph = this.$echarts.init(myChart,'rainbow');this.graph.setOption(data);this.loading = false;//浏览器窗口大小变化时触发echarts的resize函数,重新绘制canvaswindow.addEventListener("resize",function(){_this.graph.resize();});}},mounted(){this.$echarts.registerTheme("rainbow",rainbow);this.drawGraph(this.id,this.data);},beforeDestroy(){if(this.graph) this.graph.clear();},watch:{data:{handler(newValue,oldValue){this.drawGraph(this.id,newValue);},deep:true}}
}
</script>
<style>
.demo-spin-icon-load{animation: ani-demo-spin 1s linear infinite;}@keyframes ani-demo-spin {from { transform: rotate(0deg);}50%  { transform: rotate(180deg);}to   { transform: rotate(360deg);}}
</style>

graph.vue的使用
demo.vue

<template><div class="content"><div class="v-card m-r-10 m-l-10"><h2 class="card-title">图表标题</h2><graph :id="'graphId'" :data="graphOption" style="width:100%;height:100%"></graph>    </div></div>
</template>
<script>
import graph from '../../my-components/graph.vue'
export default {name: 'demo',components:{graph,},data(){graphOption:{}},methods: (){initDemoChart(){//获取图表数据,配置图表参数setOptionthis.graphOption={title: {text: 'ECharts 入门示例'},tooltip: {},legend: {data: ['销量']},xAxis: {data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]};}},mounted () {this.initDemoChart();},}
</script>

三、Echarts自定义主题

大屏数据展示往往需要根据设计图自定义主题。Echarts自定义主题也十分简单,操作如下:
1.使用Echarts官网主题编辑器(https://echarts.apache.org/zh/theme-builder.html)自定义主题,下载主题json。
2.注册主题(查看官网说明)

// 假设主题名称是 "vintage"
fetch('theme/vintage.json').then(r => r.json()).then(theme => {echarts.registerTheme('vintage', theme);var chart = echarts.init(dom, 'vintage');})

四、vue-baidu-map与vue-mapvgl

vue-baidu-mapvue-mapvgl
基于 百度地图 JS API 开发百度地图mapvgl开发
可实现常见的地图信息可视化基于WebGL的地理信息可视化库,可以用来展示大量基于3D的地理信息点线面数据。解决大数据量的三维地理数据展示问题及一些炫酷的三维效果。
https://dafrok.github.io/vue-baidu-mapVue2.x (https://docs.guyixi.cn/vue-mapvgl) Vue3 (https://vue-mapvgl.guyixi.cn/)

如果要实现3D效果,或者展示大数据量的地理信息数据,可以考虑选择vue-mapvgl

五、定制个性化地图

  1. 在百度地图个性化地图编辑平台(https://lbsyun.baidu.com/customv2/help.html)定制主题;
  2. 下载主题JSON并引用
    以vue-mapvgl为例
<template><div class="bmap-page-container"><el-bmap vid="bmapDemo" ref="bmapDemo" :mapStyleV2="mapStyle" :tilt="60" :heading="0" :zoom="10" :center="[120.786975, 36.943199]" class="bmap-View"></el-bmap><div class="toolbar"><button @click="getMap()">get map</button></div></div></template><style>.bmap-demo {height: 300px;}</style><script>//引入下载的地图主题JSONimport styleJson from '../../assets/baiduMap/mapStyle.json'export default {name: 'baiduDemo',computed:{mapStyle:function(){let style = {styleJson:styleJson}return style;},}}</script>

六、常用组件库及工具

大屏数据展示组件库

  1. datav:http://datav.jiaminghi.com/

Echarts

  1. 官网:https://echarts.apache.org/zh/index.html
  2. echarts示例网站:
    http://ppchart.com
    https://madeapie.com

百度地图

  1. vue-baidu-map :https://dafrok.github.io/vue-baidu-map|
  2. vue-mapvgl:Vue2.x (https://docs.guyixi.cn/vue-mapvgl)
  3. vue-mapvgl:Vue3 (https://vue-mapvgl.guyixi.cn/)

地图可视化工具类

  1. 百度地图个性化地图编辑平台
  2. 阿里云地图选择器
  3. geoJson数据下载

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW利用局部放电分析高压电气设备状态诊断

LabVIEW利用局部放电分析高压电气设备状态诊断 目前&#xff0c;高压电气设备状态的监控系统解决了早期故障检测的问题。局部放电起源于电力电气装置的绝缘。局部放电会导致绝缘层逐渐磨损和加速老化&#xff0c;因此可能导致绝缘完全击穿。因此&#xff0c;局部放电检测及其特…

2023年中秋节和国庆节放假几天?用待办软件记录放假安排并提醒

进入公历9月&#xff0c;我们都期待着下个长假的到来。那么2023年中秋节和国庆节放假几天呢&#xff1f;因为今年的中秋节是公历的9月29日&#xff0c;所以今年的中秋节和国庆节是连在一起放假的。放假时间安排是9月29日至10月6日&#xff0c;一共放假8天。而10月7日和8日则是调…

Python 之 numpy.unique函数的介绍以及使用

文章目录 介绍语法&#xff1a;返回值&#xff1a;示例&#xff1a;补充[1] 介绍 np.unique 是 NumPy 库中的一个函数&#xff0c;用于从数组中获取唯一的值&#xff0c;并且可以返回这些唯一值的一些相关信息。以下是对 np.unique 函数的详细介绍&#xff1a; 语法&#xff…

菜鸟教程《Python 3 教程》笔记(19):错误与异常

菜鸟教程《Python 3 教程》笔记&#xff08;19&#xff09; 19 错误和异常19.1 assert&#xff08;断言&#xff09;19.2 异常处理19.2.1 try/except19.2.2 try/except...else19.2.3 try-finally 语句 19.3 抛出异常19.4 用户自定义异常19.5 清理行为19.5.1 定义清理行为19.5.2…

Qt MinGW / MSVC

MinGW/MSVC的关系 MinGW / MSVC.dll / .lib / .a 的关系 MinGW / MSVC Qt 中有两种方式编译&#xff1a;一种是MinGW &#xff0c;另一种MSVC&#xff0c;是两种不同的编译器。 MinGW(Minimalist GNUfor Windows)&#xff0c;它是一个可自由使用和自由发布的Windows特定头文件…

KT142C-sop16语音芯片9600串口uart命令如何测试_详细说明

KT142C是一个提供串口的SOP16语音芯片&#xff0c;完美的集成了MP3的硬解码。内置330KByte的空间&#xff0c;最大支持330秒的语音长度&#xff0c;支持多段语音&#xff0c;支持直驱0.5W的扬声器无需外置功放 串口测试的软件截图如下&#xff1a; 7E 3F 00 02 00 04 EF--- 代…

【JavaSE】面试01

文章目录 1. JDK、JRE、JVM之间的关系2. 补充3. 面试题&#xff1a;重载和重写的区别&#xff1f;4. super和this5. &#xff08;重点&#xff01;&#xff01;&#xff09;若父类和子类均有静态代码块、实例代码块以及无参构造方法&#xff0c;则继承关系上的执行顺序&#xf…

opencv 基础(持续更新中)

1 前言 https://www.couragesteak.com/ 2 安装 3 基础属性demo 打开一张图片&#xff1a; import cv2img cv2.imread(./girl.jpg)print(img.shape) # (1536, 1024, 3) 数组形状 print(type(img)) # numpy 数组 print(img) # 三维数组&#xff08;彩色图片&am…

防火墙 FireWall

这里写自定义目录标题 一、概述二、防火墙分类三、防火墙性能四、硬件防火墙定义五、硬件防火墙作用&#xff08;拓扑图 ups&#xff09;六、硬件防火墙品牌七、软件防火墙八、iptables一、iptables是什么&#xff1f;二、netfilter/iptables功能三、iptables概念四、iptables中…

【容器vs虚拟机】

容器vs虚拟机 为什么用虚拟机什么是容器容器vs虚拟机 Docker被称为是轻量级的虚拟化。 首先&#xff0c;一般开发所需要的都是Linux环境&#xff0c;但我们大多数人的电脑都是Windows系统。所以要安装虚拟机&#xff0c;目的是为了在我们当前所使用的Windows上面安装上Linux环境…

kafka管理工具之kafka-ui的环境搭建笔记

由于项目需要kafka支持认证功能&#xff0c;就把kafka升级到3.2.0了。之前一直使用的kafka tools(现在叫Offset Explorer&#xff0c;个人使用免费&#xff0c;商用付费)&#xff0c;开了认证之后就不好用了&#xff0c;卡的很&#xff0c;一点也不丝滑了&#xff0c;于是只好重…

【代码随想录day24】不同的二叉搜索树

题目 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5示例 2&#xff1a; 输入&#xff1a;n 1 输出&#xf…