React+echarts (echarts-for-react) 实现中国地图及省份切换功能

 更新时间:2022年11月21日 14:42:22   作者:三两代码  
这篇文章主要介绍了React+echarts (echarts-for-react) 画中国地图及省份切换,有足够的地图数据,可以点击到街道,示例我只出到市级,本文结合实例代码给大家介绍的非常详细需要的朋友可以参考下

有足够的地图数据,可以点击到街道,示例我只出到市级

以umi为框架,版本是:

 "react": "^18.2.0",

  "umi": "^4.0.29",

  "echarts": "^5.4.0",

  "echarts-for-react": "^3.0.2",

示例中需要地图的Geojson数据,中国地图和省份的geoJson可以在echarts-map或者阿里的数据可视化中心进行下载。(我这边示例用的是阿里的数据)

废话少说,上代码:

import EChartsReact from 'echarts-for-react';
import * as echarts from 'echarts';
import china from "@/assets/MapJson/全国.json"; //默认引入全国地图
import { useRef, } from 'react';
echarts.registerMap('map', china);//默认注册全国地图
export default () => {
    let curRef = useRef(null);
    let height = window.screen.availHeight

    let option = {
        title: {
            text: '全国地图',
            textStyle: {
                color: "#000",
            },
            left: 'center',
        },
        series: [
            {
                name: '全国地图',
                type: 'map',
                mapType: 'map',
                scaleLimit: {
                    //滚轮缩放的极限控制
                    min: 0.5, //缩放最小大小
                    max: 10, //缩放最大大小
                },

                label: { // 图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
                    show: true, //显示省市名称
                    position: [1, 100], // 相对的百分比
                    fontSize: 12,
                    offset: [2, 0], // 是否对文字进行偏移。默认不偏移。例如:`[30, 40]` 表示文字在横向上偏移 `30`,纵向上偏移 `40`。
                    align: "left" // 文字水平对齐方式,默认自动。
                },
                itemStyle: { // 地图区域的多边形 图形样式
                    areaColor: "#fff" // 地图图形颜色
                },
                roam: true, // 是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 `'scale'` 或者 `'move'`。设置成 `true` 为都开启
                zoom: 1.25, // 当前视角的缩放比例
            }
        ]
    }

    return <div className='bazaarMap'>
        <EChartsReact option={option} ref={curRef} style={{ width: '100%', height: height, zIndex: 222 }}
            lazyUpdate={true} notMerge={true} onEvents={{
                'click': (param: any) => {//echarts点击事件
                    if (param.name) {//判断名称是否为空
                        const echartInstance = curRef.current.getEchartsInstance();//获取echarts实例
                        let options = echartInstance.getOption()//获取option

                        let provinceJSON = null
                        try {
                            provinceJSON = require(`@/assets/MapJson/${param.name}.json`);//根据点击的省名称查询Geojson地图数据(我是将地图数据全部保存在本地,可根据API获取地图json)
                            echarts.registerMap('map', provinceJSON);//注册点击的省份地图

                            options.title[0].text = param.name + '地图'
                            options.series[0].name = param.name + '地图'

                            // options.series[0].center = china.features.find(item => item.properties.name === param.name)?.properties?.center//修改点击后地图中心位置,不用会存在偏移,我使用下边null,默认全局居中
                            options.series[0].center = null;  //修改点击后地图中心位置,null默认全局居中
                            echartInstance.setOption(options, true)//修改echarts option
                        } catch (error) {//获取Geojson地图异常返回到全国地图,我只存在市级地图数据,所以点击市级行政区会返回到全国地图。
                            options.title[0].text = '全国地图'
                            echarts.registerMap('map', china);
                            options.series[0].name = '全国地图'

                            options.series[0].center = null
                            echartInstance.setOption(options, true)
                        }
                    }
                },
            }} />
    </div>
}

地图Geojson数据存放路径:src\assets\MapJson

亲测可用!

到此这篇关于React+echarts (echarts-for-react) 画中国地图及省份切换的文章就介绍到这了,更多相关React echarts 中国地图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React Redux管理库示例详解

    React Redux管理库示例详解

    这篇文章主要介绍了如何在React中直接使用Redux,目前redux在react中使用是最多的,所以我们需要将之前编写的redux代码,融入到react当中去,本文给大家详细讲解,需要的朋友可以参考下
    2022-12-12
  • react中props 的使用及进行限制的方法

    react中props 的使用及进行限制的方法

    这篇文章主要介绍了react中的props 的使用及进行限制的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • React翻页器的实现(包含前后端)

    React翻页器的实现(包含前后端)

    本文主要介绍了React翻页器的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • react umi 刷新或关闭浏览器时清除localStorage方式

    react umi 刷新或关闭浏览器时清除localStorage方式

    这篇文章主要介绍了react umi 刷新或关闭浏览器时清除localStorage方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 在 React 中使用 i18next的示例

    在 React 中使用 i18next的示例

    这篇文章主要介绍了在 React 中使用 i18next,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • react quill中图片上传由默认转成base64改成上传到服务器的方法

    react quill中图片上传由默认转成base64改成上传到服务器的方法

    这篇文章主要介绍了react quill中图片上传由默认转成base64改成上传到服务器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 阿里低代码框架lowcode-engine设置默认容器详解

    阿里低代码框架lowcode-engine设置默认容器详解

    这篇文章主要为大家介绍了阿里低代码框架lowcode-engine设置默认容器详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • React封装弹出框组件的方法

    React封装弹出框组件的方法

    这篇文章主要为大家详细介绍了React封装弹出框组件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 使用 React hooks 实现类所有生命周期

    使用 React hooks 实现类所有生命周期

    react 自 16.8 开始,引入了 Hooks 概念,使得函数组件中也可以拥有自己的状态,并且可以模拟对应的生命周期,这篇文章主要介绍了使用 React hooks 怎么实现类里面的所有生命周期,需要的朋友可以参考下
    2023-02-02
  • 详解React中共享组件逻辑的三种方式

    详解React中共享组件逻辑的三种方式

    这篇文章主要介绍了详解React中共享组件逻辑的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论