vue3+ts+echarts5基本地图下钻~

news2025/1/12 4:09:45

依靠本地json文件实现省市下钻,有后台的可以改成服务,样式没有,vue3+ts+echarts5,一定要设宽高

html:

 <div @click="back">返回</div>

<div id="echartsMap" style="width: 58%; height: 100%"></div>

 js:

引入

import { reactive, ref, unref, watch, onMounted, nextTick } from 'vue'

import { trackAGG } from '@/api'

import axios from 'axios'

import * as echarts from 'echarts'

import 'echarts/lib/chart/map'

import 'echarts/lib/component/visualMap'

import china from '../../../static/smap/china.json'

 方法: geoIndex: 0,防止生成两个地图,mycharts.registerMap方法的第一个参数一定要一致

const getData = async (code: any) => {

//获取数据

  const res: any = await trackAGG({

    thematic_id: navStore.themId,

    lev: 1,

    code: ''"

  })

  if (res) {

    res.features.forEach((ele: any) => {

      chartData.value.push({

        name: ele.properties.name,

        code: ele.properties.code,

        value: ele.properties.count

      })

    })

  }

}

//名称对照

let shengname = {

  上海市: 'shanghai',

  云南省: 'yunnan',

  内蒙古自治区: 'neimenggu',

  北京市: 'beijing',

  台湾省: 'taiwan',

  吉林: 'jilin',

  四川省: 'sichuan',

  天津市: 'tianjin',

  宁夏回族自治区: 'ningxia',

  安徽省: 'anhui',

  山东省: 'shandong',

  山西省: 'shanxi',

  广东省: 'guangdong',

  广西壮族自治区: 'guangxi',

  新疆维吾尔自治区: 'xinjiang',

  江苏: 'jiangsu',

  江西: 'jiangxi',

  河北省: 'hebei',

  河南: 'henan',

  浙江省: 'zhejiang',

  海南省: 'hainan',

  湖北: 'hubei',

  湖南: 'hunan',

  澳门特别行政区: 'aomen',

  甘肃省: 'gansu',

  福建: 'fujian',

  西藏自治区: 'xizang',

  贵州省: 'guizhou',

  辽宁省: 'liaoning',

  重庆市: 'chongqing',

  陕西省: 'shanxi1',

  青海省: 'qinghai',

  香港特别行政区: 'xianggang',

  黑龙江: 'heilongjiang'

}

var mapStack: any = []

mapStack.push(china) //返回上级所需

let mCharts = ref<any>()

const init = () => {

  // 创建echarts实例对象

  if (!mCharts.value)

    mCharts.value = echarts.init(

      document.getElementById('echartsMap') as HTMLElement

    )

  // 生成地图并使用本地Json地图数据

  echarts.registerMap('chinaMap', china as any)

  let option = {

    visualMap: {

      left: 'right',

      min: 500000,

      max: 38000000,

      inRange: {

        color: [

          '#313695',

          '#4575b4',

          '#74add1',

          '#abd9e9',

          '#e0f3f8',

          '#ffffbf',

          '#fee090',

          '#fdae61',

          '#f46d43',

          '#d73027',

          '#a50026'

        ]

      },

      text: ['High', 'Low'],

      calculable: true

    },

    series: [

      {

        type: 'map',

        roam: true,

        map: 'chinaMap',

        geoIndex: 0,

        emphasis: {

          label: {

            show: true

          }

        },

        data: chartData.value

      }

    ]

  }

  option && mCharts.value.setOption(option)

  window.onresize = function () {

    mCharts.value.resize()

  }

  // 地图点击事件,在这里实现下钻

  mCharts.value.on(

    'click',

    (params: any) => {

      console.log(params)

      // 获取地图点击区域的名字,根据名字请求本地地图Json

      let area = shengname[params.name]

      axios.get(`../../../static/smap/${area}.json`).then((response) => {

        // 重新生成地图的Json数据

        echarts.registerMap('chinaMap', response.data)

        // 记录当前的区域,返回上地图的标识

        if (mapStack.length < 3) {

          mapStack.push(response.data)

        }

        // 使用setOption方法将地图重置为点击的市区

        mCharts.value.setOption({

          geo: {

            type: 'map',

            map: 'chinaMap',

            layoutCenter: ['50%', '50%'],

            layoutSize: '85%'

          }

        })

      })

    },

    250

  )

}

const back = () => {

  mapStack.splice(mapStack.length - 1, 1)

  // 把数组中的最后一个元素注册到地图

  echarts.registerMap('chinaMap', mapStack[mapStack.length - 1])

  mCharts.value.setOption({

    geo: {

      type: 'map',

      map: 'chinaMap'

    }

  })

}

onMounted(async () => {

  init()

  getData('')

})

 从static里引入文件

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

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

相关文章

【Azure】微软 Azure 基础解析(七)Azure 网络服务中的虚拟网络 VNet、网关、负载均衡器 Load Balancer

本系列博文还在更新中&#xff0c;收录在专栏&#xff1a;「Azure探秘&#xff1a;构建云计算世界」 专栏中。 本系列文章列表如下&#xff1a; 【Azure】微软 Azure 基础解析&#xff08;三&#xff09;描述云计算运营中的 CapEx 与 OpEx&#xff0c;如何区分 CapEx 与 OpEx…

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

前言 先说一下自己的个人情况&#xff0c;20届应届生&#xff0c;通过校招进入到了蘑菇街&#xff0c;然后一待就待了差不多2年多的时间&#xff0c;可惜的是去年8月份受疫情影响遇到了大裁员&#xff0c;而我也是其中一员。好在之前一直想去字节跳动&#xff0c;年尾就已经在…

wlanapi.dll丢失怎么办?分享多种wlanapi.dll丢失的解决方法

Wlanapi.dll是Windows中的一个重要文件&#xff0c;它是无线局域网API的一部分&#xff0c;负责提供和管理无线网络连接的功能。如果出现wlanapi.dll丢失的情况&#xff0c;会导致无法连接到无线网络&#xff0c;影响电脑的正常使用。下面我们来看看wlanapi.dll丢失怎么办&…

在linux服务器中对R语言中for循环设置多核运行

1 问题 在R中构建了for循环&#xff0c;由于循环过多&#xff0c;运行速度过慢&#xff0c;且不同循环之间是并行关系&#xff0c;拟通过多核运行可以解决此问题。 2 代码设置 2.1 shell脚本中的设置 b.sh export OPENBLAS_NUM_THREADS8Rscript ./..._1.R \2.2 R代码中的设…

程序员必备的10张流程图

随着互联网的发展&#xff0c;现在有越来越多的人想成为程序员。 如果你想成为程序员你可以先问自己这几个问题&#xff1f; •你是一个逻辑和抽象思维能力比较强的人吗&#xff1f; •你是否愿意不断地去学习那些新的东西&#xff0c;并且在大多数时间内你都需要去自学。 …

Midway.js探索与实践

您好&#xff0c;如果喜欢我的文章&#xff0c;可以关注我的公众号「量子前端」&#xff0c;将不定期关注推送前端好文~ 前言 我司的技术基建在Midway之上&#xff0c;主要是面向中后台前后端一体化方案&#xff0c;大白话就是全栈应用解决方案&#xff0c;什么是Midway呢&am…

freeswitch的gateway配置方案优化

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 在之前的文章中&#xff0c;我们简单介绍过gateway的三种配置方案&#xff0c;但是实际应用之后发现&#xff0c;方案中的参数设置有缺陷&#xff0c;会导致一些问题。 本文档中&#xff0c;针对具体的gateway配置问题…

linux第六七天 which find进程等

ctrlF5 //强制刷新 which ifconfig //找到ifconfig的路径 发现在/usr/sbin/ifconfig 目录下 然后 cp /usr/sbin/ifconfig /root/bin/ipconfig 就相当于自己设置了ifconfig的另外一种命令 多个条件可以使用-a(-o)连接&#xff0c;表示而且&#xff08;或者&#xff09…

Django中使用celery实现定时任务和异步任务

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、准备二、配置1.引入库2.代码编写a、在settings.py文件下添加如下代码b、在项目主目录下创建celery.py文件c、在项目的__init__.py里面添加如下代码![在这里…

【期望】Kuangbin 危险的派对 牛客期望专题班 increment of coins

4849. 危险的迷宫 - AcWing题库 题意&#xff1a; 思路&#xff1a; 本来对期望怎么想都想不通&#xff0c;后来看了大佬的题解&#xff0c;自己动手画了画&#xff0c;以及队友说的“拆分”&#xff0c;忽然间就有点懂了.... 这个说的很对&#xff0c;把期望问题看作是DAG上…

Unity中对预制体烘焙光照贴图,在其他Scene中使用或者动态生成带光照贴图的预制体

记录个人开发笔记&#xff0c;如果有大佬有更好的方法或者觉得我这个方法哪里有问题欢迎指正&#xff01; 首先说下为什么会弄预制体烘焙光照贴图&#xff0c;因为项目需求需要动态生成一个房间的&#xff0c;因此是将房间弄成预制体&#xff0c;动态生成就好了&#xff0c;这…

【Datagear】如何给Datagear追加Admin

【背景】 Datagear默认是只设置了一个Admin&#xff0c;这个Admin可以完成用户的各种管理操作&#xff0c;并且对所有数据源&#xff0c;数据集&#xff0c;图表&#xff0c;面板拥有全部编辑权限。 【问题】 只有一个Admin很多场景下不够用。但是应用设置本身没有提供追加A…

【测试人生】测试工程如何去学习接口自动化技术

一、为什么要学习自动化 提高生产力&#xff1a;自动化可以帮助您在短时间内完成重复性工作&#xff0c;从而大大提高生产力。自动化不仅减少了手动执行任务所需的时间和精力&#xff0c;还减少了出错的风险。 质量保证&#xff1a;自动化测试可以确保软件在修改后仍然按预期运…

2023 光亚展|乐鑫将携 AI、Wi-Fi 6、私有云和 Matter 方案精彩亮相

2023 广州国际照明展览会&#xff08;光亚展&#xff09;将于 6 月 9 至 12 日在广州琶洲展馆启幕。本届展会以“光未来”为主题&#xff0c;畅想未来生活方式的无限可能。乐鑫科技 (688018.SH) 将在 B 区 9.2 号厅 D55 展位&#xff0c;带来具有前瞻性的智能照明解决方案和实体…

龙芯2K1000实战开发-以太网/串口设计

文章目录 概要整体架构流程技术名词解释技术细节小结概要 本文主要针对2k1000的以太网及串口的国产化设计 整体架构流程 提示:这里可以添加技术整体架构 整体架构,以太网,使用2k1000自带的以太网mac控制器,外选用国产化PHY,国产化变压器。 整体框架,如下图,主要是器…

2023安卓逆向 -- JNI学习(从开发到反编译)

一、新建native C项目&#xff0c;填写好项目信息&#xff0c;一路下一步即可 二、创建好项目&#xff0c;直接点击运行&#xff0c;出现下面界面&#xff0c;说明我们的环境都没有问题 三、Java层调用java层函数 1、新建一个Java Class&#xff0c;命名为JavaFun 2、编写java…

维宏系统修改端口位置操作说明

1.关闭软件后找到Ncconfig.exe工具并打开 具体操作步骤 (1)桌面上鼠标点到 NcStudio鼠标右键-打开文件所在的位置如下图 (2) 在目录中找到NcConfig.exe的快捷方式&#xff08;黄色图标&#xff09; (3)打开并输入密码&#xff08;密码和软件密码一样默认初始密码ncstudio …

欧科云链:2023年5月链上安全事件盘点

一、基本信息 2023年5月安全事件约造成1800万美元损失&#xff0c;相比上月有显著下降&#xff0c;但安全事件发生频率并未减少。其中针对Jimbos Protocol的攻击造成了约750万美元损失。Arbitrum链的Swaprum项目Rug Pull造成了约300万美元的损失。此外&#xff0c;社交媒体钓鱼…

工业RFID解决方案怎么选?主要看这几项内容

如何选择适合您需求的RFID解决方案&#xff1f;通过深入了解需求、环境适应性、成本效益和供应商选择&#xff0c;您将能够更加全面地评估和选择适合自身需求的RFID解决方案。同时&#xff0c;不断与供应商和专业人员进行沟通和合作&#xff0c;可以获取更多关于特定解决方案的…

FineReport自定义排序

FineReport是帆软的报表开发工具&#xff0c;报表开发者可以用低代码的形式&#xff0c;配置出报表。主要适用于较简单的填报场景&#xff08;比如填写销售目标&#xff0c;维护项目映射关系等&#xff09;&#xff0c;用户可以在报表上填报数据&#xff0c;存储于数据库&#…