Echarts 绘制地图

一、Apache Echarts
官网地址:https://echarts.apache.org/ 

npm install echarts --save

二、获取地图的GeoJSON
地址:DataV.GeoAtlas地理小工具系列

 左侧是地图,右侧是JSON数据路径,点击你想要生成的地图省市、地级(以中华人名共和国为例为例)

注意:地图点击可以下钻,再点进去是二级,直到你想要的省市地区(点击旁边的空白可以返回上一级);右侧JSON数据的链接地址,可以选择下载下来(放在json文件夹中),也可以使用在线地址!(json API与geoJSON数据地址均可用)

三、项目中引用

import * as echarts from 'echarts';


四、准备放地图的容器

<div style="width:800px;height:600px" id="main"></div>


五、配置地图option信息

let mapOption = {
    tooltip: {
      trigger: 'item',
      formatter: () => {
        let showHtml = ''
        showHtml += `
              <span style="display: flex; font-size: 12px;">
                  ${'装机量'}:${params.name}</br>
              </span>
          `
        return showHtml
      },
    },
 
    legend: {
      orient: 'vertical',
      left: 'left',
      data: [],
    },
    series: [
      {
        name: '安装信息',
        type: 'map',
        mapType: 'china',
        roam: false,
        label: {
          normal: {
            show: true,
          },
          emphasis: {
            show: true,
          },
        },
        emphasis: {
          scale: true,
          itemStyle: {
            areaColor: '#fff',
          },
        },
        symbolSize: function (val) {
          return val[2] / 15
        },
        showEffectOn: 'render',
        itemStyle: {
          areaColor: '#2043AA',
          borderColor: '#111',
          color: '#fff',
        },
        zlevel: 1,
        data: [
          {
            name: '北京',
            value: Math.round(Math.random() * 100),
            warn: 10,
            problem: 12,
          },
          {
            name: '天津',
            value: Math.round(Math.random() * 100),
            warn: 10,
            problem: 12,
          },
          {
            name: '上海',
            value: Math.round(Math.random() * 100),
            warn: 10,
            problem: 12,
          },
          {
            name: '重庆',
            value: Math.round(Math.random() * 100),
            warn: 10,
            problem: 12,
          },
          { name: '河北', value: Math.round(Math.random() * 100) },
          { name: '河南', value: Math.round(Math.random() * 100) },
          { name: '云南', value: Math.round(Math.random() * 100) },
          { name: '辽宁', value: Math.round(Math.random() * 100) },
          { name: '黑龙江', value: Math.round(Math.random() * 100) },
          { name: '湖南', value: Math.round(Math.random() * 100) },
          { name: '安徽', value: Math.round(Math.random() * 100) },
          { name: '山东', value: Math.round(Math.random() * 100) },
          { name: '新疆', value: Math.round(Math.random() * 100) },
          { name: '江苏', value: Math.round(Math.random() * 100) },
          { name: '浙江', value: Math.round(Math.random() * 100) },
          { name: '江西', value: Math.round(Math.random() * 100) },
          { name: '湖北', value: Math.round(Math.random() * 100) },
          { name: '广西', value: Math.round(Math.random() * 100) },
          { name: '甘肃', value: Math.round(Math.random() * 100) },
          { name: '山西', value: Math.round(Math.random() * 100) },
          { name: '内蒙古', value: Math.round(Math.random() * 100) },
          { name: '陕西', value: Math.round(Math.random() * 100) },
          { name: '吉林', value: Math.round(Math.random() * 100) },
          { name: '福建', value: Math.round(Math.random() * 100) },
          { name: '贵州', value: Math.round(Math.random() * 100) },
          { name: '广东', value: Math.round(Math.random() * 100) },
          { name: '青海', value: Math.round(Math.random() * 100) },
          { name: '西藏', value: Math.round(Math.random() * 100) },
          { name: '四川', value: Math.round(Math.random() * 100) },
          { name: '宁夏', value: Math.round(Math.random() * 100) },
          { name: '海南', value: Math.round(Math.random() * 100) },
          // {name: '台湾',value: Math.round(Math.random()*100)},
          { name: '香港', value: Math.round(Math.random() * 100) },
          { name: '澳门', value: Math.round(Math.random() * 100) },
        ],
      },
    ],
  }


六、初始化地图
我的地图Json文件是下载放到项目里assets下的,你可以使用在线的也可以引用本地的

var myChart = echarts.init(document.getElementById('main')); //获取当前的div
echarts.registerMap('china', data) // 注册china.json的数据到初始化的echarts对象
myChart.setOption(mapOption) // 绑定地图的配置参数对象,参考第二步
myChart.resize()

效果如下:

完整代码如下:

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <div id="main" style="width:1000px;height:800px;"></div>
  </div>
</template>

<script>
import * as echarts from 'echarts';
import data from './assets/map.json'

export default {
  name: 'App',
  mounted() {
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));
    // 指定图表的配置项和数据
    var option = {
      tooltip: {
        trigger: 'item',
        formatter: (params) => {
          let showHtml = ''
          showHtml += `
                <span style="display: flex; font-size: 12px;">
                    ${'装机量'}:${params.name}</br>
                </span>
            `
          return showHtml
        },
      },
      legend: {
        orient: 'vertical',
        left: 'left',
        data: [],
      },
      series: [
        {
          name: '安装信息',
          type: 'map',
          mapType: 'china',
          roam: false,
          label: {
            normal: {
              show: true,
            },
            emphasis: {
              show: true,
            },
          },
          emphasis: {
            scale: true,
            itemStyle: {
              areaColor: '#fff',
            },
          },
          symbolSize: function (val) {
            return val[2] / 15
          },
          showEffectOn: 'render',
          itemStyle: {
            areaColor: '#2043AA',
            borderColor: '#111',
            color: '#fff',
          },
          zlevel: 1,
          data: [
            {
              name: '北京',
              value: Math.round(Math.random() * 100),
              warn: 10,
              problem: 12,
            },
            {
              name: '天津',
              value: Math.round(Math.random() * 100),
              warn: 10,
              problem: 12,
            },
            {
              name: '上海',
              value: Math.round(Math.random() * 100),
              warn: 10,
              problem: 12,
            },
            {
              name: '重庆',
              value: Math.round(Math.random() * 100),
              warn: 10,
              problem: 12,
            },
            { name: '河北', value: Math.round(Math.random() * 100) },
            { name: '河南', value: Math.round(Math.random() * 100) },
            { name: '云南', value: Math.round(Math.random() * 100) },
            { name: '辽宁', value: Math.round(Math.random() * 100) },
            { name: '黑龙江', value: Math.round(Math.random() * 100) },
            { name: '湖南', value: Math.round(Math.random() * 100) },
            { name: '安徽', value: Math.round(Math.random() * 100) },
            { name: '山东', value: Math.round(Math.random() * 100) },
            { name: '新疆', value: Math.round(Math.random() * 100) },
            { name: '江苏', value: Math.round(Math.random() * 100) },
            { name: '浙江', value: Math.round(Math.random() * 100) },
            { name: '江西', value: Math.round(Math.random() * 100) },
            { name: '湖北', value: Math.round(Math.random() * 100) },
            { name: '广西', value: Math.round(Math.random() * 100) },
            { name: '甘肃', value: Math.round(Math.random() * 100) },
            { name: '山西', value: Math.round(Math.random() * 100) },
            { name: '内蒙古', value: Math.round(Math.random() * 100) },
            { name: '陕西', value: Math.round(Math.random() * 100) },
            { name: '吉林', value: Math.round(Math.random() * 100) },
            { name: '福建', value: Math.round(Math.random() * 100) },
            { name: '贵州', value: Math.round(Math.random() * 100) },
            { name: '广东', value: Math.round(Math.random() * 100) },
            { name: '青海', value: Math.round(Math.random() * 100) },
            { name: '西藏', value: Math.round(Math.random() * 100) },
            { name: '四川', value: Math.round(Math.random() * 100) },
            { name: '宁夏', value: Math.round(Math.random() * 100) },
            { name: '海南', value: Math.round(Math.random() * 100) },
            // {name: '台湾',value: Math.round(Math.random()*100)},
            { name: '香港', value: Math.round(Math.random() * 100) },
            { name: '澳门', value: Math.round(Math.random() * 100) },
          ],
        },
      ],
    }
    echarts.registerMap('china', data) // 注册china.json的数据到初始化的echarts对象
    myChart.setOption(option) // 绑定地图的配置参数对象,参考第二步
    myChart.resize()
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

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

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

相关文章

想入手养宠宠物空气净化器,养宠宠物空气净化器哪个好?

家里有了宠物后&#xff0c;确实多了很多欢乐&#xff0c;但掉落的毛发也多了不少&#xff0c;特别是换毛期&#xff0c;掉毛问题真的很让人头疼&#xff01;作为养了多年宠物的铲屎官&#xff0c;我真心推荐大家买一台宠物空气净化器&#xff0c;它能大大提升家里的空气质量&a…

ASUS/华硕ROG掌机 2023款 RC71 NR2301原厂win11系统 工厂文件 带ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;一键恢复&#xff0c;以及机器所有驱动软件。 系统版本&#xff1a;windows11 原厂系统下载网址&#xff1a;http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意&#xff1a;仅支持以上型号专用…

nginx 升级http 到 http2

同步发布于我的网站 &#x1f680; 背景介绍准备工作配置过程遇到的问题及解决方法验证升级总结参考资料 背景介绍 HTTP/2 是 HTTP 协议的最新版本&#xff0c;相比 HTTP/1.1&#xff0c;它带来了多项重要的改进&#xff0c;包括多路复用、头部压缩和服务端推送。这些特性可…

Spark 内存管理机制

Spark 内存管理 堆内内存和堆外内存 作为一个 JVM 进程&#xff0c;Executor 的内存管理建立在 JVM(最小为六十四分之一&#xff0c;最大为四分之一)的内存管理之上&#xff0c;此外spark还引入了堆外内存&#xff08;不在JVM中的内存&#xff09;&#xff0c;在spark中是指不…

透视投影(Perspective projection)与等距圆柱投影(Equirectangular projection)

一、透视投影 1.方法概述 Perspective projection&#xff08;透视投影&#xff09;是一种模拟人眼观察三维空间物体时的视觉效果的投影方法。它通过模拟观察者从一个特定视点观察三维场景的方式来创建二维图像。在透视投影中&#xff0c;远处的物体看起来比近处的物体小&…

uniapp开发微信小程序笔记8-uniapp使用vant框架

前言&#xff1a;其实用uni-app开发微信小程序的首选不应该是vant&#xff0c;因为vant没有专门给uni-app设置专栏&#xff0c;可以看到目前Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 但是vant的优…

Spring Web MVC其他扩展(详解下)

文章目录 Spring MVC其他扩展&#xff08;下&#xff09;异常处理异常处理机制声明式异常好处基于注解异常声明异常处理 拦截器拦截器概念拦截器使用拦截器作用位置图解拦截器案例拦截器工作原理源码 参数校验校验概述操作演示SpringMVC自定义参数验证ValueObject(VO) 文件上传…

【线上问题记录 | 排查网络连接问题】

问题描述 现在有我们程序是部署在服务器A的&#xff0c;A链接的是B。程序从B的redis进行存储和取数据的。 我们的业务是: 信息展示&#xff0c;也就是如果发现机器有异常了&#xff0c;实时进行监控。突然发现有一天&#xff0c;信息显示延迟了。 然后我们就开始排查究竟什么原…

如何保护LabVIEW程序免遭反编译

在正常情况下&#xff0c;LabVIEW程序&#xff08;即编译后的可执行文件或运行时文件&#xff0c;如 .exe 或 .llb&#xff09;无法直接被反编译出源码。然而&#xff0c;有一些需要特别注意的点&#xff1a; 1. LabVIEW的编译机制 LabVIEW编译器会将源码&#xff08;.vi文件&a…

求助:selenium.common.exceptions.SessionNotCreatedException: x x x

1.背景 想要使用python代码接管已打开的浏览器&#xff0c;减少重复登录或者selenium用例执行前的又臭又长的流程 2.报错截图 3.场景 目前是已开启浏览器调试模式且终端未关闭&#xff0c;执行上图中的代码后没有自动输入url且报错 4. 分析 我尝试了add_experimental_optio…

40分钟学 Go 语言高并发:【实战课程】工作池(Worker Pool)实现

工作池&#xff08;Worker Pool&#xff09;实战实现 一、知识要点概述 模块核心功能实现难点重要程度池化设计管理协程生命周期并发安全、资源控制⭐⭐⭐⭐⭐动态扩缩容根据负载调整池大小平滑扩缩、性能优化⭐⭐⭐⭐任务分发合理分配任务到worker负载均衡、任务优先级⭐⭐⭐…

Could not locate device support files.

报错信息&#xff1a;Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题&#xff1a;xcode15升级到xcode16之后&#xff0c;13.…

Ubantu系统docker运行成功拉取失败【成功解决】

解决docker运行成功拉取失败 失败报错 skysky-Legion-Y7000-IRX9:~$ docker run hello-world docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head “http://%2Fvar%2Frun%2Fdocker.sock/_ping”: dial uni…

git rebase-优雅合并与修改提交

文章目录 简介rebase用于合并使用rebase修改提交cherry-pick 简介 在Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)中我们已经介绍了git的最常用实用的命令。 在上面说的那篇文章中&#xff0c;我们只是简单提了一下rebase。 是因为r…

TongRDS分布式内存数据缓存中间件

命令 优势 支持高达10亿级的数据缓冲&#xff0c;内存优化管理&#xff0c;避免GC性能劣化。 高并发系统设计&#xff0c;可充分利用多CPU资源实现并行处理。 数据采用key-value多索引方式存储&#xff0c;字段类型和长度可配置。 支持多台服务并行运行&#xff0c;服务之间可互…

【大数据学习 | Spark调优篇】Spark之内存调优

1. 内存的花费 1&#xff09;每个Java对象&#xff0c;都有一个对象头&#xff0c;会占用16个字节&#xff0c;主要是包括了一些对象的元信息&#xff0c;比如指向它的类的指针。如果一个对象本身很小&#xff0c;比如就包括了一个int类型的field&#xff0c;那么它的对象头实…

pageoffice最新版本浏览器点击没反应解决办法

一、问题现象 最新版本的谷歌、火狐浏览器&#xff0c;调用pageoffice时&#xff0c;点击后没反应&#xff08;旧的谷歌浏览器不受影响&#xff09;。 二、产生原因 服务器返回pageOffice的客户端唤起链接格式为&#xff1a; PageOffice://|http://192.168.1.120:8080/xxx …

知行合一:实践中的技术分享与学习

随着科技的不断发展&#xff0c;技术的更新迭代也在不断加速。在这个信息化、数字化的时代&#xff0c;技术人员之间的交流与合作显得尤为重要。为了帮助广大技术爱好者、从业者和专家们相互学习、分享经验、解决技术难题&#xff0c;涵盖了数据库、容器化技术、运维、研发、网…

使用经典的Java,还是拥抱新兴的Rust?

在当代互联网时代的企业级开发中&#xff0c;技术栈的选择往往牵动着每个团队的神经。随着Rust语言的崛起&#xff0c;许多开发团队开始重新思考&#xff1a;是继续坚持使用经典的Java&#xff0c;还是拥抱新兴的Rust&#xff1f;这个问题背后&#xff0c;折射出的是对技术演进…

【Qt】图片绘制不清晰的问题

背景 实现一个图片浏览器&#xff0c;可以支持放大/缩小查看图片。主要组件如下&#xff1a; // canvaswidget.h #ifndef CANVASWIDGET_H #define CANVASWIDGET_H#include <QWidget>class CanvasWidget : public QWidget {Q_OBJECT public:explicit CanvasWidget(QImag…