echarts 地图

效果图

业务组件

<template><mapEcharts :itemStyle="mapProps.itemStyle" :emphasisLabelStyle="mapProps.emphasisLabelStyle":emphasisItemStyle="mapProps.emphasisItemStyle" :labelInfo="mapProps.labelInfo":rippleEffect="mapProps.rippleEffect" :tooltipProps="mapProps.tooltipProps":tooltipFormat="mapProps.tooltipFormat" :itemColorFormat="mapProps.itemColorFormat":seriesData="mapProps.seriesData"></mapEcharts>
</template><script setup lang="ts">
const mapProps = reactive({idType:"0",jsonData:{},  itemStyle: {areaColor: '#186894',//区域颜色shadowColor: '#2894c9',//边缘阴影颜色color: 'rgba(255, 255, 255, 1)'//文字颜色},emphasisLabelStyle: {color: "rgba(255, 255, 255, 1)"},emphasisItemStyle: {areaColor: '#39baf6',shadowColor: '#2894c9',},labelInfo: {show: true,color: 'rgba(255,255,255,0.6)',position: 'inside',distance: 0,fontSize: 10,rotate: 0,},rippleEffect: {number: 4,period: 4,scale: 4.5,brushType: 'fill'},tooltipProps: {show: true,shadowColor: 'rgba(0, 0, 0, 0)', // 设置阴影颜色为透明shadowBlur: 0, // 设置阴影模糊度为0,即无阴影backgroundColor: "rgba(21, 29, 56,0)",borderColor: "rgba(21, 29, 56,0)"},tooltipFormat: (params: any) => {//弹窗提示的逻辑处理console.log("params11", params)const curItem = mapDataByProvice(params.name)if(!curItem||!curItem.selfCount){return ""}let fromatStr =`<div style="background:url(${getImg('/src/assets/img/mapHoverBg.png')});width:324px;height:225px;background-size:contain;background-repeat:no-repeat;"><div style="width: 100px;height: 90px;padding-top:4px;position:relative;"><div  style="position:absolute;left:20px;top:10px;font-weight:bold;color:#fff;">${params.name}</div><div  style="position:absolute;left:120px;top:58px;color:#fff;width:120px;text-align:right;">${curItem.selfCount}</div><div  style="position:absolute;left:135px;top:108px;color:#fff;width:120px;text-align:right;">${curItem.toCount}</div><div  style="position:absolute;left:166px;top:158px;color:#fff;width:120px;text-align:right;">${curItem.inCount}</div></div>        </div>`return fromatStr},itemColorFormat: (params: any) => {//颜色的业务逻辑console.log("params001", params)if (params.value[2] > 0 && params.value[2] <= 100) {return '#00ff31';} else if (params.value[2] > 100 && params.value[2] <= 200) {return '#f00';} else if (params.value[2] > 200 && params.value[2] <= 300) {return '#0ff';} else if (params.value[2] > 300 && params.value[2] <= 400) {return '#ff0';}},effectScatterCallBack:(params:any)=>{//散点点击触发的 业务逻辑console.log("equipmentDialogRef",params)equipmentDialogRef.value.open()},seriesData: [{ name: '肇庆市', value: [112.48461, 23.05196, 100] },{ name: '佛山市', value: [110.130214, 23.018978, 200] },{ name: '广州', value: [115.261081, 23.139856, 300] },{ name: '南宁', value: [107.45, 22.139856, 400] },{ name: '贵阳', value: [106.7, 26.36, 200] },{ name: '昆明', value: [102.33, 24.23, 300] }   ,{ name: '海口', value: [110.33,19.823, 10] }]
})const mapDataByProvice = (provinceName: String) => {let listData = [{name: "广东省",selfCount: 123,toCount: 300,inCount: 987},{name: "广西壮族自治区",selfCount: 23,toCount: 55,inCount: 278},{name: "云南省",selfCount: 256,toCount: 2456,inCount: 745},{name: "贵州省",selfCount: 963,toCount: 4521,inCount: 963}]const curItem: any = listData.find(ele => ele.name == provinceName)return curItem
}
</script>

封装组件

<template><div :id="'mapEcharts' + idType" style="width: 100%;height: 100%;" ></div>
</template><script setup lang="ts">
import * as echarts from 'echarts'
const propsVal: any = defineProps({idType: {type: String,default: '0'},jsonData: {type: Object,default: {}},title: {//标题type: Object,default: {}},itemStyle: {//地图项样式type: Object,default: {areaColor: '#186894',//区域颜色shadowColor: '#2894c9',//边缘阴影颜色color: 'rgba(255, 255, 255, 1)'//文字颜色}},emphasisLabelStyle: {//鼠标移入 文本 label 高亮的样式  type: Object,default: {color: "rgba(255, 255, 255, 1)"}},emphasisItemStyle: {//鼠标移入 地图高亮样式type: Object,default: {areaColor: '#39baf6',shadowColor: '#2894c9',}},labelInfo: {type: Object,//地图标签配置 如 云南省等default: {show: true,color: 'rgba(255,255,255,0.6)',position: 'inside',distance: 0,fontSize: 10,rotate: 0,}},rippleEffect: {//点的闪烁配置type: Object,default: {number: 4,period: 4,scale: 4.5,brushType: 'fill'}},tooltipProps: {//鼠标移动提示框的样式type: Object,default: {show: false,//是否显示,默认不显示backgroundColor: '#fff'//提示框的背景色}},tooltipFormat: {//提示 格式type: Function,default: () => { }},itemColorFormat: {//颜色格式化type: Function,default: () => { }},seriesData: {//地图点标记数据type: Array,default: []},effectScatterCallBack: {//effectScatter 点击事件type: Function,default: () => { }},
})
const initEcharts = () => {echarts.registerMap('guangdong', propsVal.jsonData)nextTick(() => {const domitem = document.getElementById("mapEcharts" + propsVal.idType)const map = echarts.init(domitem, null, {renderer: 'canvas',})const option = {title: propsVal.title,// 悬浮窗tooltip: {trigger: 'item',//触发条件},geo: {map: 'guangdong',zoom: 1,roam: '',label: propsVal.labelInfo,// 所有地图的区域颜色itemStyle: propsVal.itemStyle,emphasis: {label: propsVal.emphasisLabelStyle,itemStyle: propsVal.emphasisItemStyle},tooltip: {...propsVal.tooltipProps,formatter: (params: any) => {return propsVal.tooltipFormat(params)}}},series: [{name: 'Top 5',type: 'effectScatter',colorBy: 'series',effectType: 'ripple',showEffectOn: 'render',rippleEffect: propsVal.rippleEffect,itemStyle: {color: (params: any) => {return propsVal.itemColorFormat(params)}},coordinateSystem: 'geo',data: propsVal.seriesData,},{name: 'eventDom',type: 'scatter',coordinateSystem: 'geo',data: propsVal.seriesData,symbolSize: 32,itemStyle: {color:"rgba(255,255,255,0)"},},],}map.setOption(option)chartClickEventListener(map)})
}
onMounted(() => {console.log("propsval", propsVal)initEcharts()})
const chartClickEventListener = (mychart: any) => {mychart.on("click", (parmas: any) => {propsVal.effectScatterCallBack(parmas)})
}const chagneJSON = (item: any) => {console.log("propsval", propsVal)propsVal.idType = item.navIdsetTimeout(() => {initEcharts()})
}
defineExpose({chagneJSON
})</script><style scoped>
.map-echart {height: 600px;width: 900px;
}
</style>

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

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

相关文章

LeetCode 2661. 找出叠涂元素:多次映射

【LetMeFly】2661.找出叠涂元素&#xff1a;多次映射 力扣题目链接&#xff1a;https://leetcode.cn/problems/first-completely-painted-row-or-column/ 给你一个下标从 0 开始的整数数组 arr 和一个 m x n 的整数 矩阵 mat 。arr 和 mat 都包含范围 [1&#xff0c;m * n] 内…

.[[backup@waifu.club]].wis勒索病毒数据怎么处理|数据解密恢复

导言&#xff1a; 随着科技的不断发展&#xff0c;网络安全威胁也变得愈发严峻。最近&#xff0c;一种名为.[[backupwaifu.club]].wis的勒索病毒愈演愈烈&#xff0c;给用户的数据安全带来了极大的威胁。本文将深入介绍.[[backupwaifu.club]].wis病毒的特征、如何应对数据加密…

帆软的控件参数-笔记1

1.帆软的控件参数 变量可以通过模板->模板参数定义添加需要给变量赋值的控件&#xff0c;如下拉控件时&#xff0c;将控件名称命名为与模板参数同名帆软就会自行匹配。也可以不添加模板参数&#xff0c;直接给控件名称命名&#xff0c;该命名就是变量名&#xff0c;该变量名…

Vmware17虚拟机安装windows10系统

不要去什么系统之家之类的下载镜像&#xff0c;会不好安装&#xff0c;镜像被魔改过了&#xff0c;适合真实物理机上的系统在PE里安装系统&#xff0c;建议下载原版系统ISO文件 安装vmware17pro 下载地址https://dwangshuo.jb51.net/202211/tools/VMwareplayer17_855676.rar 解…

pandas基础1

​ Pandas 是非常著名的开源数据处理库&#xff0c;我们可以通过它完成对数据集进行快速读取、转换、过滤、分析等一系列操作。除此之外&#xff0c;Pandas 拥有强大的缺失数据处理与数据透视功能&#xff0c;可谓是数据预处理中的必备利器。 ​ Pandas 是非常著名的开源数据处…

Vue3中定义变量是选择ref还是reactive?

Ref 与reactive 在 Vue 3 中&#xff0c;reactive 和 ref 是用于创建响应式数据的两个不同的 API。它们都是 Vue 3 Composition API 的一部分。 ref&#xff1a; ref 用于创建一个包装基本数据类型的响应式对象。它接受一个初始值&#xff0c;并返回一个包含 value 属性的对…

Effective C++(一): Const Correctness, Const成员函数和Const Cast

文章目录 一、Const成员函数二、Const Correctness三、Const Cast 有关 const 的用法是 cpp 中一个非常经典且易错的部分&#xff0c;在面试和日常工作中各种各样的 const 经常让人摸不着头脑&#xff0c;今天就来根据 const 扮演的不同角色来归纳有关 const 的不同用法 一、C…

泊车功能专题介绍 ———— 汽车全景影像监测系统性能要求及试验方法(国标未公布)

文章目录 术语和定义一般要求功能要求故障指示 性能要求响应时间图像时延单视图视野范围平面拼接视图视野平面拼接效果总体要求行列畸变拼接错位及拼接无效区域 试验方法环境条件仪器和设备车辆条件系统响应时间试验图像时延试验单视图视野范围试验平面拼接视图视野试验平面拼接…

Ubuntu 22.04安装Go 1.21.4编译器

lsb_release -r看到操作系统版本是22.04,uname -r看到内核版本是uname -r。 sudo wget https://studygolang.com/dl/golang/go1.21.4.linux-amd64.tar.gz下载编译器。 sudo tar -zxf go1.21.4.linux-amd64.tar.gz -C /goroot将文件解压到/goroot目录下&#xff0c;这个命令…

生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin

文章目录 前言1、IDEA打包工具&#xff1a;Artifacts1.1 创建Artifacts1.2 选择第三方jar文件1.3 打包Artifacts1.4 测试jar包 2、maven-shade-plugin2.1、pom文件添加2.2、打包2.3、测试jar包 总结 前言 当我们编写完Java程序后&#xff0c;为了提高执行效率通常会将应用程序…

冒泡排序详解

1.引入 当我们创建一个数组时&#xff0c;我们可能会发现这个数组的元素顺序可能不固定&#xff0c;这个时候就需要我们给数组排序&#xff0c;给数组排序的方法有很多种&#xff0c;这里今天我们先来介绍一下最简单的一种排序方法&#xff0c;即冒泡排序。 冒泡排序顾名思义&a…

vscode配置c++环境

我现在觉得vscode确实很好用&#xff0c;所以python和c都是用的这个。 首先是安装vs&#xff1a; 官网寻找即可&#xff1a;https://code.visualstudio.com/ 安装好后需要装一些插件&#xff1a; 装上这两个插件&#xff0c;c/c&#xff0c;code runner 接着安装c编译器mi…

canvas基础:绘制虚线

canvas实例应用100 专栏提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。 canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重要的帮助。 文章目录 示例…

一些常见的爬虫库

一些常见的爬虫库&#xff0c;并按功能和用途进行分类&#xff1a; 通用爬虫库&#xff1a; Beautiful Soup&#xff1a;用于解析HTML和XML文档&#xff0c;方便地提取数据。Requests&#xff1a;用于HTTP请求&#xff0c;获取网页内容。Scrapy&#xff1a;一个强大的爬虫框架…

Python爬虫教程27:秀啊!用Pandas 也能爬虫??

说到爬虫&#xff0c;大家可能都知道requests、re、scrapy、selenium等等一些工具库。虽然它低调&#xff0c;但功能非常强大&#xff0c;用于抓取Table表格型数据时&#xff0c;简直是个神器&#xff0c;没有必要去F12研究HTML页面结构甚至写正则表达式解析字段。 #我的Pytho…

Python教程78:聊聊exec和eval()函数,有什么用法区别

exec 和 eval 是 Python 中的两个内置函数&#xff0c;它们都可以执行Python代码&#xff0c;但它们的使用方式和目的有所不同。 1.exec()函数用于执行动态的 Python 代码&#xff0c;你可以使用exec来执行存储在字符串或对象代码中的 Python 代码。exec 不会返回任何结果&…

BigDecimal

用于解决小数运算中&#xff0c;出现的不精确问题。 创建对象 new BigDecimal(double val)&#xff1a;不用&#xff0c;无法解决不精确问题。 new BigDecimal(String val)&#xff1a;推荐 BigDecimal.valueOf(double val)&#xff1a;推荐 常用方法 加法&#xff1a;add(Bi…

【嵌入式-51单片机】常见位运算和数据类型以及sbit使用

51单片机中 数据类型如下&#xff1a; 位运算符如下&#xff1a; 按位左移<<&#xff1a;低位补零&#xff0c;高位移出 按位右移>>&#xff1a;高位补零&#xff0c;低位移出 按位与&&#xff1a;对应位上的值必须同时为1才为1&#xff0c;可以用来对指定位…

【2023年修正版】哈夫曼编码详解

霍夫曼编码的原理就是根据字符的使用频率&#xff0c;排成二叉树&#xff0c;使用次数少的放到后面&#xff0c;使用次数多的离根节点越近&#xff1b;这样字符的占位也相应的较少。 首先&#xff0c;主要操作是找每次字符中使用频率最低的&#xff08;数最小&#xff09;两个数…

ASEM工控机维修工业电脑控制器维修PB3400

ASEM工控机维修asem工业电脑维修常见型号&#xff1a;PB3400;PB2000;PB3200;PB3600&#xff1b;BM2200等。 ASEM工控机维修常见故障有&#xff1a;开不了机、黑屏、不能启动、电路板故障、主板、开机没反应、显示器没反应、主板故障、蓝屏、卡机、显示器信号灯一直闪、系统不能…