Threejs 实现3D 地图(04)3d 地图的柱状图和文字显示

devtools/2024/10/25 7:13:29/

3d 地图的数据展示

代码仓库:

King/threejs-3d-map

核心代码:

function createText(feature, level, font) {if (feature.properties.name) {const [x_XYZ, y_XYZ] = handleProject(feature.properties.center)// 缺点:首次渲染很慢 无法使用中文已经中文标点符号 需要特殊处理(自行百度)// 优点:清晰const geometry = new TextGeometry(`GDP:32632`, {font: font,size: !level ? 10 : 6, // 字体大小depth: 0,curveSegments: 4,});const materials = new THREE.MeshBasicMaterial({color: 0xffffffff,transparent: true,opacity: 0.5,})const textMesh = new THREE.Mesh(geometry, materials)textMesh.position.set(x_XYZ - 20, -y_XYZ, 150);return textMesh// 缺点:使用的是贴图 会导致比较模糊// 优点:首次渲染很快 能使用中文已经中文标点符号// const canvas = document.createElement('canvas');// const context = canvas.getContext('2d');// // 设置 Canvas 的尺寸// canvas.width = 512;// canvas.height = 256;//// // 设置字体样式// context.font = '50px Arial';// context.fillStyle = 'white';  // 设置文字颜色// context.textAlign = 'center'; // 文字居中// context.textBaseline = 'middle'; // 文字垂直居中// // 绘制文字到 Canvas 中心// context.fillText('GDP 总额:20000亿', canvas.width / 2, canvas.height / 2);//// const texture = new THREE.CanvasTexture(canvas);// const material = new THREE.MeshBasicMaterial({ map: texture });// const geometry = new THREE.PlaneGeometry(50, 10);// const textMesh = new THREE.Mesh(geometry, material);// textMesh.position.set(x_XYZ, -y_XYZ, 150);// return textMesh}
}function createCylinder(feature, level) {const tb = level === 0 ? 10 : 6if (feature.properties.center) {const [x_XYZ, y_XYZ] = handleProject(feature.properties.center)// 随机生成20 - 100 之间的正整数const random = Math.floor(Math.random() * 80) + 20// 创建一个柱体let geometry_g = new THREE.CylinderGeometry(tb, tb, random, 32);let material_g = new THREE.MeshBasicMaterial({color: '#0DEAF8',transparent: true,opacity: 0.8});let cylinder = new THREE.Mesh(geometry_g, material_g);cylinder.position.set(x_XYZ, -y_XYZ, 16 + (random / 2));cylinder.rotateX(Math.PI / 2);return cylinder}}

下一篇:

Threejs 实现3D 地图(05)3d 地图进场动画和地图边缘动画-CSDN博客


http://www.ppmy.cn/devtools/128620.html

相关文章

技术成神之路:设计模式(二十三)解释器模式

相关文章:技术成神之路:二十三种设计模式(导航页) 介绍 解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义一种语言的文法表示,并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达…

Django+Vue智慧分析居家养老系统统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者&…

算法通关(2)--单调队列

特点: 队列中的元素保持单调递增或者单调递减的顺序可以在头部和尾部进行元素的插入和删除操作大小是动态变化的,由元素的入队和出队的操作决定 单调队列的经典用法 1.维持窗口滑动中的最大/最小值 维持了一个依次称为最大值的可能性! 增…

基于neo4j的学术论文关系管理系统

正在为毕业设计头疼?又或者在学术研究中总是找不到像样的工具来管理浩瀚的文献资料?今天给大家介绍一款超实用的工具——基于Neo4j的学术论文关系管理系统,让你轻松搞定学术文献的管理与展示!🎉 系统的核心是什么呢&a…

word删除空白页 | 亲测有效

想要删掉word里面的末尾空白页,但是按了delete之后也没有用 找了很久找到了以下亲测有效的方法 1. 通过鼠标右键在要删除的空白页面处显示段落标记 2. 在字号输入01,按ENTER(回车键) 3.成功删除了!! PS…

进程间通信(一)管道

文章目录 进程间通信进程间通信概述进程间通信的方式管道通信示例--基于管道的父子进程通信示例--使用管道进程兄弟进程通信 管道的读写特性示例--不完整管道(读一个写端关闭的管道)示例--不完整管道(写一个读端关闭的管道) 标准库…

Java实现文件上传功能

目录 1、准备工作 2、注意事项 3、jsp页面代码 4、Servlet 5、注册Servlet 1、准备工作 导入依赖:commons-fileupload和commons-io 2、注意事项 ①为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如WEB-INF目录下 ②为…

Lua变量

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua是一种轻量级的脚本语言,以其简单、高效和易于嵌入的特性而广受欢迎。在Lua中,变量是存储数据的容器,可以存储不同类型…