Vue3+Three.js+antvG2实战项目 智慧城市(五)

news2025/1/4 19:32:08

前言
在网上找了很久都没有找到使用Three.js开发智慧城市的免费文章或者免费视频,自己花了一点时间做了一个纯前端的智慧城市项目。
技术栈都是最新的:vue3+vite+typeScript+Three+antv G2


源码分享 源码
模型,天空图盒子链接分享(不想下载源码可以只用下这个)提取码1234

20230424_152716

智慧城市项目的录制视频


智慧城市的大屏部分讲完了 接下来的 图表和头部都用定位定过去

App.vue

<template>
  <div class="container" id="container">
    <header class="header">智慧上海驾驶舱</header>
    <section class="leftTop"></section>
    <section class="leftCenter"></section>
    <section class="leftFooter"></section>
    <section class="rightTop"></section>
    <section class="rightCenter"></section>
    <section class="rightFooter"></section>
 </div>
</template>
<style>
.container{
  width:100vw;
  height: 100vh;
  overflow: hidden;
}
.header{
  width: 100vw;
  height: 80px;
  position: fixed;
  top: 0;
  text-align: center;
  font-size: 28px;
  letter-spacing: 4px;
  line-height: 65px;
  color:#fff;
  background-image: url("../public/img/23.png");
  background-size: 100% 100%;
  background-repeat: no-repeat;
}
.leftTop{
  width: 400px;
  height: 310px;
  position: fixed;
  z-index: 9999999;
  top: 40px;
  left:20px;
  border-radius: 10px;
  background-color: rgba(6,7,80,0.6);
}
.leftCenter{
  width: 400px;
  height: 310px;
  position: fixed;
  z-index: 9999999;
  top: 370px;
  left:20px;
  border-radius: 10px;
  background-color: rgba(6,7,80,0.6);
}
.leftFooter{
  width: 400px;
  height: 210px;
  position: fixed;
  z-index: 9999999;
  top: 700px;
  left:20px;
  border-radius: 10px;
  background-color: rgba(6,7,80,0.6);
}
.rightTop{
  width: 400px;
  height: 310px;
  position: fixed;
  z-index: 9999999;
  top: 40px;
  right:20px;
  border-radius: 10px;
  background-color: rgba(6,7,80,0.6);
}
.rightCenter{
  width: 400px;
  height: 310px;
  position: fixed;
  z-index: 9999999;
  top: 370px;
  right:20px;
  border-radius: 10px;
  background-color: rgba(6,7,80,0.6);
}
.rightFooter{
  width: 400px;
  height: 210px;
  position: fixed;
  z-index: 9999999;
  top: 700px;
  right:20px;
  border-radius: 10px;
  background-color: rgba(6,7,80,0.6);
}
</style>

效果如下在这里插入图片描述
大致结构我们搭建好了 接下来的步骤
1.我们做几个antv的组件 柱状图 条形图 折线图的组件
2.然后引入到我们刚刚创建好的app.vue 的 div 里面去

1.在views文件夹里面创建如下图的文件夹
在这里插入图片描述
leftCenter文件夹->index.vue的代码

<!--  -->
<template>
  <div class="leftTopModule">
    <header class="head">
        <titleModule :title="state.titleName"></titleModule>
    </header>
    <section class="main" id="main"></section>
  </div>
</template>

<script setup>
import { onMounted, reactive } from 'vue'
import titleModule from '../../components/title/index.vue'
import { Bar } from '@antv/g2plot';
const state = reactive({
    titleName:'各区GDP'
})
//创建饼图
const createBar = () =>{
    //1.创建数据源
    const data = [
        { year: '浦东新区', sales: 15353 },
        { year: '徐汇区', sales: 2176 },
        { year: '长宁区', sales: 1561 },
        { year: '黄埔区', sales: 2616 },
        { year: '普陀区', sales: 1226 },
    ]
    //2.创建bar对象
    const barPlot = new Bar('main',{
        data,
        xField:'sales',
        yField:'year',
        colorField:'year',
        color:(d)=>{
            console.log(d)
            if(d.year == '浦东新区') return '#5AD8A6';
            if(d.year == '徐汇区') return '#F6BD16';
            if(d.year == '长宁区') return '#E86452';
            if(d.year == '黄埔区') return '#6DC8EC';
            if(d.year == '普陀区') return '#945FB9';
        },
        xAxis:{
            label:{
                visible:false,
                style:{
                    fontSize:17,
                }
            },
            tickLine:{
                visible:false
            }
        },
        yAxis:{
            label:{
                style:{
                    fontSize:17,
                }
            },
            grid:{
                visible:false
            }
        },
    })
    //3.渲染
    barPlot.render();
}

onMounted(()=>{
    createBar()
})
</script>
<style  scoped>
.leftTopModule{
    width: 100%;
    height: 100%;
}
.head{
    width: 100%;
    height: 15%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.main{
    width: 95%;
    height: 82%;
    margin: 0 auto;
}
</style>

因为六个文件夹的代码太多了 这里我只做一个示例 其他五个文件夹的代码 可以复制leftCenter的

2.然后在app.vue引入组件

<div class="container" id="container">
    <header class="header">智慧上海驾驶舱</header>
    <section class="leftTop">
      <LeftTop />
    </section>
    <section class="leftCenter"></section> 
    <section class="leftFooter"></section>
    <section class="rightTop"></section>
    <section class="rightCenter"></section>
    <section class="rightFooter"></section>
</div>
<script lang="ts" setup>
import LeftTop from './views/leftTop/index.vue'
</script>

在这里插入图片描述
智慧城市我们就讲完了

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

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

相关文章

报表开发工具Stimulsoft Report新增“用户参数”新功能,来看如何使用?

Stimulsoft Reports 是一款报告编写器&#xff0c;主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署&#xff0c;如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等&#xff0c;在你的应用程序中嵌入报告设计器…

PN/Modbus协议下,PLC与IO模块能否建立无线通讯?

在实际系统中&#xff0c;一个车间内PLC与多个IO信号点需要建立通讯&#xff0c;从而提高工作效率&#xff0c;通常距离在几十米到上百米不等。在有通讯需求的时候&#xff0c;如果布线的话&#xff0c;工程量较大且不美观&#xff0c;这种情况下比较适合采用无线通信方式。本方…

chatgpt赋能python:Python字符串截取指南:如何截取指定位置字符串

Python字符串截取指南&#xff1a;如何截取指定位置字符串 在Python中&#xff0c;字符串截取是一项非常常见的操作。当我们需要从一个字符串中提取特定位置的字符或子串时&#xff0c;我们可以使用Python内置的截取函数和切片操作来实现。在本文中&#xff0c;我们将介绍如何…

为什么上了ERP,效率反而更低?

业界一直有句老话&#xff1a;“不上ERP等死&#xff0c;上了ERP找死”&#xff0c;可把ERP的尴尬处境说透了。 有人把ERP奉为信仰&#xff1a;“那些说ERP不好用的根本是没用明白”&#xff0c;有人则认为ERP只是卖概念&#xff0c;冷嘲&#xff1a;“实施ERP的企业&#xff…

Measurement Studio 2019 f3 Crack

Measurement Studio是Microsoft Visual Studio的扩展软件&#xff0c;提供了用于创建测试和测量应用程序的.NET工具。 了解Measurement Studio的功能 Measurement Studio是​唯一​一​款.NET​工具​套​件&#xff0c;专为在Microsoft Visual Studio中构建工程应用&#xff0…

2023年,知识付费行业呈现哪些发展趋势?

艾媒咨询数据显示&#xff0c;2022年中国知识付费市场规模达1126.5亿元&#xff0c;较2015年增长约70倍&#xff0c;预计将在2025年超过2800亿元。随着疫情形势持续好转&#xff0c;知识付费的“居家红利”或将逐渐消退&#xff0c;但三年来用户的付费求知和在线学习习惯已经养…

C# WPF读取文本内容的7种方式

文章目录 前言一、界面展示二、使用步骤1.引入库2.界面代码3.后台代码&#xff08;1&#xff09;打开文件&#xff08;2&#xff09;第一种&#xff1a;基于FileStream&#xff0c;并结合它的Read方法读取指定的字节数组&#xff0c;最后转换成字符串进行显示。&#xff08;3&a…

迎战算力黄金时代,惠普Z系列工作站焕新升级

作者伍杏玲 随着今年 AIGC 浪潮席卷全球&#xff0c;AI应用的迅速增长对算力提出更多挑战。据《全球计算力指数评估报告》显示&#xff0c;未来5年&#xff0c;全球算力规模将以超过50%的速度飞速增长&#xff0c;预计到2024年&#xff0c;中国将生产出高达36ZB的数据量&#…

盲区死角「暗藏」风险隐患,哪些智能化方案或将前装「标配」

因车辆盲区死角而引发的交通事故&#xff0c;近年来呈现高发态势。上周一则《交警实测SUV视野盲区有多大&#xff0c;75个孩子藏在盲区&#xff0c;一点看不见》的视频火爆社交网络。 视频中&#xff0c;交警让幼儿园老师坐进一辆SUV警车的驾驶位并戴上眼罩&#xff0c;然后引导…

uniapp可视化操作-diygw

uniapp可视化操作:DIY可视化-拖拽设计1天搞定主流小程序环境安装 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 uniapp可视化操作:DIY可视化-拖拽设计1天搞定主流小程序环境安装前言一、DIY可视化桌面客户端安装…

Linux--ServerProgramming--(2)socket

1. 主机字节序和网络字节序 下面以32位机为前提&#xff1a;CPU累加器一次能装载至少 4 字节&#xff0c;即一个整数。字节序分为&#xff1a;1.大端字节序&#xff08;big endian&#xff09;指一个整数的高位字节&#xff08;23~32 bit &#xff09;存储在内存的低地址处&am…

Nat Biotechnol -- 生成式AI进军更高效价抗体

类似于ChatGPT的语言模型已被应用于改进针对COVID-19、埃博拉和其他病毒的抗体疗法。 代码看不懂&#xff1f;ChatGPT 帮你解释&#xff0c;详细到爆&#xff01; 单克隆抗体&#xff08;Y形&#xff09;与SARS-CoV-2病毒纤突蛋白&#xff08;红色&#xff09;上的结合位点&…

长光程气体吸收池的真空压力精密控制解决方案

摘要&#xff1a;目前用于气体吸收池真空压力控制的压力控制器存在有残留气体和无法进行高真空测量的问题&#xff0c;无法进行微量气体的光谱分析。为此&#xff0c;本文提出了动态平衡法的解决方案&#xff0c;即采用两个高速真空低漏率的电子针阀分别调节进气和出气流量&…

02_类加载子系统

目录 1、Jvm内存结构概述二、类加载器与类的加载过程1、类加载器子系统的作用2、类的加载过程 三、类加载器的分类1、启动类加载器2、扩展类加载器3、应用程序类加载器4、用户自定义加载器5、获取ClassLoader的几种方式 五、双亲委派机制1、什么是双亲委派机制2、双亲委派机制的…

Windows上SVN迁移至Linux

1.从windows导出svn文件 bat脚本 echo offsvnadmin dump E:\Repositories\3goodsoft_carbon_admin > D:/test/3goodsoft_carbon_admin.dump svnadmin dump E:\Repositories\3goodsoft_android > D:/test/3goodsoft_android.dump svnadmin dump E:\Repositories\3g…

chatgpt赋能python:Python如何在指定目录下创建文件

Python如何在指定目录下创建文件 Python是一种流行的编程语言&#xff0c;因为它易于学习、易于使用和非常灵活。其中一个常见的任务是在指定目录下创建文件&#xff0c;这在编写应用程序或脚本时经常需要。在本文中&#xff0c;我们将介绍使用Python在指定目录下创建文件的方…

第05章 数组

一 数组的概述 1.1 为什么需要数组 需求分析1&#xff1a; 需要统计某公司50个员工的工资情况&#xff0c;例如计算平均工资、找到最高工资等。用之前知识&#xff0c;首先需要声明50个变量来分别记录每位员工的工资&#xff0c;这样会很麻烦。因此我们可以将所有的数据全部…

chatgpt赋能python:Python如何取消空格

Python如何取消空格 在Python编程中&#xff0c;取消字符串中的空格是一个常见的需求。特别是在进行字符串处理和数据清洗时&#xff0c;取消空格可以方便数据的分析和处理。在本次文章中&#xff0c;我们将介绍使用Python语言如何取消字符串中的空格&#xff0c;以及一些常见…

如何将会议录音转文字?你知道如何将会议录音转文字吗?

会议录音转文字的需求在现代工作和生活中变得越来越重要。随着会议的频繁举行&#xff0c;我们常常需要记录会议内容以便后续查阅和分析。而传统的手动记录方式效率低下且容易出错。幸运的是&#xff0c;现在有许多会议录音转文字的应用程序可供选择&#xff0c;它们可以将会议…

uniPush2.0踩坑实录

首先&#xff0c;按照下面链接&#xff0c;把预备工作做完&#xff0c;基本可以实现dcloud后台网页推送&#xff1a; uniPush2.0 消息推送_没有白天的CXY的博客-CSDN博客 第二步&#xff0c;走完本流程后&#xff0c;会遇到各种坑&#xff0c;一个一个来踩&#xff1a; 第一坑…