echarts引入自定义字体不起作用问题记录

echarts引入自定义字体不起作用问题记录

1、问题描述

初始化界面字体不作用,当界面更新后字体样式正常显示

2、原因描述

这通常是由于字体文件加载延迟导致的。ECharts 在初始化时可能还没有加载完字体文件,因此无法正确应用字体样式

3、解决方案

<template>
	<div class="map_layout" ref="chartRef"></div>
</template>
<script setup>
import * as echarts from 'echarts'
import { ref, watch, onUnmounted, onBeforeMount } from 'vue'
import mapData from '@/utils/mapData.json'
import { fontSizeRatio } from '@/utils'

const chartRef = ref(null)
let chart = null

onBeforeMount(() => {
	echarts.registerMap('聊城', mapData)
	let renderData = mapData.features.map((item) => {
		return {
			name: item.properties.name
		}
	})
	let options = {
		geo: [
			{
				map: '聊城',
				aspectScale: 1,
				zoom: 0.65,
				layoutCenter: ['50%', '50%'],
				layoutSize: '140%',
				show: true,
				roam: false,
				label: {
					emphasis: {
						show: false
					}
				},
				itemStyle: {
					normal: {
						borderColor: 'white',
						borderWidth: 1,
						shadowColor: '#8cd3ef',
						shadowOffsetY: 10,
						shadowBlur: 30,
						areaColor: 'rgb(59, 168, 226)'
					}
				}
			},
			// 重影
			{
				type: 'map',
				map: '聊城',
				zlevel: -1,
				aspectScale: 1,
				zoom: 0.65,
				layoutCenter: ['50%', '51%'],
				layoutSize: '140%',
				roam: false,
				silent: true,
				itemStyle: {
					normal: {
						borderWidth: 1,
						borderColor: 'white',
						shadowColor: 'rgb(0, 126, 208)',
						shadowOffsetY: 5,
						shadowBlur: 15,
						areaColor: 'rgb(0, 126, 208)'
					}
				}
			}
		],
		series: [
			{
				name: '聊城市数据',
				type: 'map',
				map: '聊城', // 自定义扩展图表类型
				aspectScale: 1,
				zoom: 0.65, // 缩放
				showLegendSymbol: true,
				label: {
					normal: {
						show: true,
						textStyle: {
							color: '#286ADC',
							fontSize: '0.24rem',
							letterSpacing: '0.03rem',
							fontFamily: 'YouSheBiaoTiHei',
							textBorderColor: 'white', // 文本边框
							textBorderWidth: fontSizeRatio(4) // 文字边框大小
						}
					},
					emphasis: {
						show: true,
						color: '#286ADC',
						fontSize: '0.24rem',
						letterSpacing: '0.02rem',
						fontFamily: 'YouSheBiaoTiHei',
						textBorderColor: 'white',
						textBorderWidth: fontSizeRatio(4)
					}
				},
				itemStyle: {
					normal: {
						areaColor: {
							type: 'linear-gradient',
							x: 0,
							y: 0,
							x2: 0,
							y2: 1000,
							colorStops: [
								{
									offset: 0,
									color: 'rgba(78, 201, 242)' // 0% 处的颜色
								},
								{
									offset: 0.5,
									color: 'rgba(27, 115, 199, 1)' // 50% 处的颜色
								},
								{
									offset: 1,
									color: 'rgba(27, 115, 199, 1)' // 100% 处的颜色
								}
							],
							global: true // 缺省为 false
						},
						borderColor: '#fff',
						borderWidth: fontSizeRatio(2)
					},
					emphasis: {
						show: false,
						areaColor: {
							type: 'linear',
							x: 0,
							y: 0,
							x2: 0,
							y2: 1, // 渐变方向从上到下
							colorStops: [
								// 颜色停靠点
								{ offset: 0, color: '#E86632' }, // 开始颜色
								{ offset: 0.5, color: '#F6CB55' },
								{ offset: 1, color: '#E86632' } // 结束颜色
							],
							globalCoord: true // 是否为全局坐标
						}
					}
				},
				layoutCenter: ['50%', '50%'],
				layoutSize: '140%',
				markPoint: {
					symbol: 'none'
				},
				data: renderData
			}
		]
	}
	setTimeout(() => {
		chart = echarts.init(chartRef.value)
		options && chart.setOption(options)
		window.addEventListener('resize', resizeHandler)
		document.fonts.ready.then(() => {
			resizeHandler()
		})
	}, 0)
})

function resizeHandler() {
	chart &&
		chart.resize({
			animation: {
				duration: 300,
				easing: 'quadraticIn'
			}
		})
}

onUnmounted(() => {
	chart && chart.dispose()
	window.removeEventListener('resize', resizeHandler)
})

watch(chartRef, (newContainer, oldContainer) => {
	if (newContainer && newContainer !== oldContainer) {
		resizeHandler()
	}
})
</script>

<style scoped lang="less">
@import '@/assets/styles/fonts.css';

.map_layout {
	margin-top: -6%;
	margin-left: 8%;
	height: 100%;
}
</style>

// 确保字体加载完成后重新渲染图表
document.fonts.ready.then(() => {
	resizeHandler()
})

4、效果图
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AscendC从入门到精通系列(一)初步感知AscendC

1 什么是AscendC Ascend C是CANN针对算子开发场景推出的编程语言&#xff0c;原生支持C和C标准规范&#xff0c;兼具开发效率和运行性能。基于Ascend C编写的算子程序&#xff0c;通过编译器编译和运行时调度&#xff0c;运行在昇腾AI处理器上。使用Ascend C&#xff0c;开发者…

JavaScript——函数、事件与BOM对象

一、系统函数(JS中预置的函数) JS的预置函数在遇到非数字字符时会停止解析 parseInt 转整型 parseFloat 转浮点型 isNaN !isNaN("10") 检测是否纯数字 eval 把字符串转成算式并计算 1.parseInt(string, radix); 语法&#xff1a; string&#x…

Python学习从0到1 day28 Python 高阶技巧 ⑤ 多线程

若事与愿违&#xff0c;请相信&#xff0c;上天自有安排&#xff0c;允许一切如其所是 —— 24.11.12 一、进程、线程 现代操作系统比如Mac OS X&#xff0c;UNIX&#xff0c;Linux&#xff0c;Windows等&#xff0c;都是支持“多任务”的操作系统。 进程 进程&#xff1a;就…

OpenCV视觉分析之目标跟踪(11)计算两个图像之间的最佳变换矩阵函数findTransformECC的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 根据 ECC 标准 78找到两幅图像之间的几何变换&#xff08;warp&#xff09;。 该函数根据 ECC 标准 ([78]) 估计最优变换&#xff08;warpMatri…

彻底解决单片机BootLoader升级程序失败问题

文章目录 1、引言2、MicroBoot&#xff1a;优雅的解决升级问题问题1&#xff1a;bootloader 在跳转到app前没有清理干净存在的痕迹问题2&#xff1a; 需要 APP 传递信息给 Bootloader问题3&#xff1a; APP单独运行没有问题&#xff0c;通过Bootloader跳转到APP运行莫名死机问题…

v-html 富文本中图片使用element-ui image-viewer组件实现预览,并且阻止滚动条

效果 导入组件 import ElImageViewer from "element-ui/packages/image/src/image-viewer"; components:{ ElImageViewer },模板使用组件 <el-image-viewerv-if"isShowPics":on-close"closeViewer":url-list"srcList"/>定义两…

山寨一个Catch2的SECTION

Catch2 是一个 C 单元测试库&#xff0c;吹嘘自己比 NUnit 和 xUnit 还要高明&#xff0c; 支持在 TEST_CASE() 中的多个 SECTION&#xff0c; 意思是说 SECTION 外头的代码相当于setup 和 teardown&#xff0c;section 内部则被认为是实际的 test case&#xff0c; 这种写法可…

深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅

​​​​​​​ &#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏: C专栏 目录 继承的概念及定义 继承的概念 继承定义 定义格式 继承基类成员访问⽅式的变化 继承类模板 基类和派⽣类间的转换 继承中的作⽤域 隐藏规则 成员函数的隐藏 考察继承【作⽤…

36.Redis核心设计原理

本文针对前面的讲解做一次总结 1.Redis基本特性 1.非关系型的键值对数据库&#xff0c;可以根据键以O(1)的时间复杂度取出或插入关联值 2.Redis的数据是存在内存中的 3.键值对中键的类型可以是字符串&#xff0c;整型&#xff0c;浮点型等&#xff0c;且键是唯一的 4.键值对中…

项目模块十七:HttpServer模块

一、项目模块设计思路 目的&#xff1a;实现HTTP服务器搭建 思想&#xff1a;设计请求路由表&#xff0c;记录请求方法与对应业务的处理函数映射关系。用户实现请求方法和处理函数添加到路由表&#xff0c;服务器只接受请求并调用用户的处理函数即可。 处理流程&#xff1a; …

vue项目npm run serve出现【- Network: unavailable】(从排查到放弃)

1. 问题现象 环境&#xff1a; 系统&#xff1a;win11node&#xff1a;v16.20.2“vue”: “2.6.10” 执行npm run serve启动vue项目&#xff0c;期望&#xff1a; App running at:- Local: http://localhost:9528/ - Network: http://x.x.x.x:9528/实际&#xff1a; App runn…

喜报|超维机器人荣获昇腾AI创新大赛铜奖

近日&#xff0c;在备受瞩目的昇腾AI创新大赛中&#xff0c;超维机器人凭借扎实的技术实力和创新产品&#xff0c;荣获大赛铜奖。这一荣誉不仅展现了超维机器人在智能巡检领域的技术创新与突破&#xff0c;也标志着超维机器人的智能巡检解决方案在人工智能领域获得了广泛认可&a…

编程初学者的第一个 Rust 系统

编程初学者的第一个 Rust 系统 对编程初学者而言&#xff0c;存在一个 “第一个系统” 的问题&#xff0c;如果没有学会第一个系统&#xff0c;编程初学者是学不会编程的。原因是&#xff0c;现实生活里的应用程序都是有一定体量的&#xff0c;不是几十行&#xff0c;几百行的…

单元测试、集成测试、系统测试有什么区别

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 单元测试、集成测试、系统测试有什么区别 1、粒度不同 集成测试bai粒度居中&#xff0c;单元测试粒度最小&#xff0c;系统du测试粒度最大。 2、测试方式不同…

Java面试要点16 - 面向对象基础:类与对象

本文目录 一、引言二、类的定义与对象创建三、成员变量与封装四、构造方法五、this关键字六、静态成员七、总结 一、引言 面向对象编程是Java的核心特性之一&#xff0c;它通过类和对象的概念来组织和管理代码&#xff0c;使代码更加模块化、可复用和易于维护。本文将深入探讨…

【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载

软件介绍 下载iOS旧版应用&#xff0c;简化繁琐的抓包流程。 一键生成去更新IPA&#xff08;手机安装后&#xff0c;去除App Store的更新检测&#xff09;。 软件界面 支持系统 Windows 10/Windows 8/Windows 7&#xff08;由于使用了Fiddler库&#xff0c;因此需要.Net环境…

LeetCode 热题100 之 多维动态规划

1.不同路径 思路分析&#xff1a;动规五部曲 dp数组定义&#xff1a;dp[i][j]表示从起点&#xff08;0&#xff0c;0&#xff09;到位置(i,j)的路径数量递推公式&#xff1a;dp[i][j] dp[i-1][j] dp[i][j-1] 从 (i-1, j) 位置到 (i, j) 需要走一步向下的路径。从 (i, j-1) 位…

文件操作(3)

前言&#xff0c;在上篇博客介绍了如何正确的打开一个文件和关闭一个文件&#xff0c;今天我们来学习如何在文件中输出和输入数据。 对文件数据的读写可以分为顺序读写和随机读写。顺序读写&#xff0c;即挨着顺序对文件中的数据进行输入或输出。 在这片博客中&#xff0c;我们…

Openstack7--安装消息队列服务RabbitMQ

只需要在控制节点安装 安装RabbitMQ yum -y install rabbitmq-server 启动RabbitMQ并设置开机自启 systemctl start rabbitmq-server;systemctl enable rabbitmq-server 创建 rabbitmq 用户 并设置密码为 000000 rabbitmqctl add_user rabbitmq 000000 如果你不慎创错了…

Unity图形学之Shader2.0 模板测试

1.模版测试&#xff1a;符合条件的 通过 不符合条件的 像素 丢弃 比较公式&#xff1a; if&#xff08;&#xff08;referenceValue&readMask&#xff09; comparisonFunction &#xff08;stencilBufferValue&readMask&#xff09;&#xff09; 通过像素 else 抛弃…