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

news2024/12/23 14:55:16

一、布局

可视化大屏
常见的大屏数据展示布局,一般会将地图作为整个屏幕的背景,在地图上以九宫格布局展示各类数据图表。实现这一效果可以使地图的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函数,重新绘制canvas
            window.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(){
        	//获取图表数据,配置图表参数setOption
        		this.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>
   //引入下载的地图主题JSON
     import 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.coloradmin.cn/o/974629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何通过构建遥感光谱反射信号与地表参数之间的关系模型来准确估算植被参数?植被参数光学遥感反演方法(Python)及遥感与生态模型数据同化算法

目录 专题一 植被参数遥感反演理论 专题二 植被叶片及冠层反射率模拟与处理 专题三 植被遥感模型参数敏感性分析 专题四 基于查找表(LUT)方法反演植被参数 专题五 基于优化算法反演植被参数 专题六 基于机器学习反演植被参数 专题七 遥感数据同化理论 专题八 同化遥感反…

浅谈一下酒吧和酒馆的不同

相信有很多朋友还不怎么清楚酒吧和酒馆的区别是什么&#xff0c;这里为大家简单介绍一下两者的不同&#xff0c;个人见解&#xff0c;如有错漏&#xff0c;欢迎指出。一、首先是他们的经营范围不同酒馆经营通常包含酒水和餐饮&#xff0c;适合朋友聚会或者是和商业伙伴聊天。而…

/etc/ssh/sshd_config 配置文件中的 PasswordAuthentication PermitRootLogin 参数作用

1、PasswordAuthentication PasswordAuthentications是一种身份验证方式&#xff0c;通常用于远程服务器的登录。当用户连接到远程服务器并进行身份验证时&#xff0c;服务器会根据 用户名进行验证&#xff0c;如果验证成功允许用户访问服务器。在SSH中&#xff0c;PasswordAut…

Docker容器日志和宿主机的时间问题

容器与主机的时间 我们在部署完docker之后往往会发现&#xff0c;容器的时间和主机的时间其实是对不上的&#xff0c;因为宿主机设置了时区&#xff0c;而Docker容器并没有设置&#xff0c;导致Docker容器的时间和宿主机时间不同步&#xff0c;导致两者相差8小时。我们可以进入…

常用命令之mysql命令之show命令

一、mysql show命令简介 mysql数据库中show命令是一个非常实用的命令&#xff0c;SHOW命令用于显示MySQL数据库中的信息。它可以用于显示数据库、表、列、索引和用户等各种对象的信息。我们常用的有show databases&#xff0c;show tables&#xff0c;show full processlist等&…

KreadoAI:国产免费用的AI数字人视频工具

hi&#xff0c;同学们&#xff0c;我是赤辰&#xff0c;本期是赤辰第4篇AI工具类教程&#xff0c;文章底部准备了粉丝福利&#xff0c;看完可以领取&#xff01; 今天来给大家分享一个可以免费生成虚拟数字人视频的网站。操作简单&#xff0c;一学就会&#xff0c;你也可以很方…

typescript 支持与本地调试

typescript 支持与本地调试 typescript 支持与本地调试 前言支持 typescript函数的本地调试 启用 node-terminal 调试invoke localserverless-offline Next Chapter完整示例及文章仓库地址 前言 在上一章节&#xff0c;我们创建了一个 hello world 函数&#xff0c;并把它顺…

用「渣男」心态去面试,爽翻!

转载自博学谷公众号&#xff01; 面试是一场“销售”自己的考试&#xff0c;很多程序员掌握的技术、知识都非常过关&#xff0c;但在面试中却不能完全展现出来&#xff0c;屡屡发挥失常。 同样是天选打工人 别人的offer&#xff0c;像猴子摘苞谷&#xff0c;应接不暇 而你的of…

双亲委派机制的作用

文章目录 类加载过程一、java有哪些类加载器&#xff1f;二、双亲委派机制自定义String类 总结 类加载过程 先简单说一下java的类加载器 类加载器&#xff0c;顾名思义就是一个可以将Java字节码加载为java.lang.Class实例的工具。这个过程包括&#xff0c;读取字节数组、验证…

喜讯!Cancer Res(IF:11.2)发表胃癌PICH的转录调控机制

2023年8月30日&#xff0c;兰州大学第二医院焦作义教授团队在肿瘤学Top期刊Cancer Research&#xff08;IF:11.2&#xff09;发表“PICH activates Cyclin A1 transcription to drive S-phase progression and chemoresistance in gastric cancer”的研究论文。该研究鉴定了SNF…

框架分析(9)-Hibernate

框架分析&#xff08;9&#xff09;-Hibernate 专栏介绍Hibernate特性对象关系映射&#xff08;ORM&#xff09;数据库连接和事务管理查询语言&#xff08;HQL&#xff09;缓存机制透明的持久化操作对象的延迟加载事务管理 优缺点优点简化数据库操作跨数据库平台高度可定制性缓…

设置 Hue Server 与 Hue Web 界面之间的会话超时时间

设置 Hue Server 与 Hue Web 界面之间的会话超时时间 在 CDH 的 Hue 中&#xff0c;Auto Logout Timeout 参数表示用户在不活动一段时间后将自动注销&#xff08;登出&#xff09;的超时时间。当用户在 Hue 中处于不活动状态超过该设定时间时&#xff0c;系统将自动注销用户&am…

深度学习入门教学——代价敏感学习

1、背景 常用于分类器性能评估的指标为&#xff1a;准确率或错误率&#xff0c;也就是代价不敏感学习。【注】代价&#xff1a;一个类别被错误分类到其他类别的惩罚&#xff08;也称为权重&#xff09;。代价不敏感学习的前提是&#xff1a; 不同类的误分类代价相同。用于学习…

【力扣周赛】第 112 场双周赛

文章目录 竞赛链接Q1&#xff1a;7021. 判断通过操作能否让字符串相等 IQ2&#xff1a;7005. 判断通过操作能否让字符串相等 II&#xff08;贪心&#xff09;Q3&#xff1a;2841. 几乎唯一子数组的最大和竞赛时代码——滑动窗口 Q4&#xff1a;8050. 统计一个字符串的 k 子序列…

小白学go基础05-变量声明形式

和Python、Ruby等动态脚本语言不同&#xff0c;Go语言沿袭了静态编译型语言的传统&#xff1a;使用变量之前需要先进行变量的声明。 变量声明形式使用决策流程图 这里大致列一下Go语言常见的变量声明形式&#xff1a; var a int32 var s string "hello" var i 13 …

C# void 关键字学习

C#中void关键字是System.Void的别名&#xff1b; 可以将 void 用作方法&#xff08;或本地函数&#xff09;的返回类型来指定该方法不返回值&#xff1b; 如果C&#xff03;方法中没有参数&#xff0c;则不能将void用作参数&#xff1b;这是与C语言不同的&#xff0c;C语言有…

附录2-将三国演义按章节存储为不同的txt(bs4)

地址 《三国演义》全集在线阅读_史书典籍_诗词名句网 目录 1 项目分析 2 代码 1 项目分析 我们可以在首页中找到所有的章节 每一个章节是一个a标签&#xff0c;a标签连接到该章节的内容 但这个网站他有bug&#xff0c;章节都是乱套的&#xff0c;我们无视这种错误&#…

Python通过Socket操作RFID设备-盘点功能

项目介绍&#xff1a;根据这么多年的IT经验&#xff0c;需求通过与用户沟通发现的&#xff0c;机会也是这样出来的。仓库的小伙子跟我倒苦水&#xff0c;动不动实物盘点&#xff0c;几千颗物料&#xff0c;都忙疯了&#xff0c;而且&#xff0c;新的物料一入库&#xff0c;作为…

基于Matlab分析的电力系统可视化研究

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

什么是专线网络?互联网专线为什么贵

宽带主要分为专线和家庭宽带。一般来说&#xff0c;企业服务器和云服务提供商通常使用专线宽带&#xff0c;普通家庭接入家庭宽带。 什么是专线网络&#xff1f; 专线是指依托国内骨干网络和宽带城市网络资源&#xff0c;为企业集团客户提供专线接入方式互联网城市互联网&…