React 使用recharts实现散点地图的示例代码

 更新时间:2018年12月07日 11:17:40   作者:garrett  
这篇文章主要介绍了React 使用recharts实现散点地图的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一、前端框架react+ant design UI

二、首先安装recharts

npm install recharts

或者

yarn add recharts

三、引入插件及chinaJSON.js(里面有经纬度信息)

由于项目需要我是全部存数据库的,因为也需要自己添加,下面附一份儿全国省市县经纬度数据

chinaJSON.js_jb51.rar

import React,{Component} from 'react';
import {message} from 'antd';
import echarts from "echarts";
import {mapJson,geoCoordMap} from './chinaJSON.js';

三、具体实现代码如下

import React,{Component} from 'react';
import {message} from 'antd';
import echarts from "echarts";
import {mapJson,geoCoordMap} from './chinaJSON.js';

const convertData = (data) => {
  var res = [];
  for (var i = 0; i < data.length; i++) {
    var geoCoord = geoCoordMap[data[i].name];
    if (geoCoord) {
      res.push({
        value: geoCoord.concat(data[i].value),
        name: data[i].name,
      });
    }
  }
  return res;
};


class LayoutImg extends Component {
  constructor() {
   super();
   this.state = {
    loading: true,
    loaded:false,
    vmData:[
        {name: '云浮', value: 24,num:10},
        {name: '烟台', value: 28,num:5},
        {name: '昆山', value: 33,num:8},
        {name: '泰州', value: 36,num:10},
        {name: '广州', value: 38,num:8},
        {name: '深圳', value: 41,num:10},
        {name: '三亚', value: 54,num:12},
        {name: '成都', value: 58,num:20},
        {name: '重庆', value: 66,num:5},
        {name: '大庆', value: 279,num:10}
        ]
   }
  }
  componentDidMount() {
   this.initMapDidMount();
  }

  initMapDidMount(){
   echarts.registerMap('china', mapJson); // 注册地图
   var mapChart = echarts.init(document.getElementById('map'));
   var option = {
     backgroundColor: '#404a59',
     title: {
      text: '分布',
      // subtext: '点击进入',
      // sublink: 'http://www.baidu.com/',
      left: 'center',
      textStyle: {
        color: '#fff'
      }
     },
     tooltip : {
      trigger: 'item',
      formatter: function (params) {      //格式化鼠标指到点上的弹窗返回的数据格式
        return params.name + ' : ' + params.value[2];
      }
     },
     geo: {         //地里坐标系组件(相当于每个省块)
      map: 'china',
      roam:true,      //是否开启缩放 
      label: {
        emphasis: {        //鼠标划到后弹出的文字 显示省份
         color: '#FF0000',    //高亮背景色
         show: true,       //是否高亮显示
         fontSize:12       //字体大小
        }
      },
      itemStyle: {         //坐标块本身
        normal: {         //坐标块默认样式控制
         areaColor: '#323c48',  //坐标块儿颜色
         borderColor: '#111'
        },
        emphasis: {
         areaColor: '#79FF79'  //放坐标块儿上,块儿颜色
        }
      }
     },
     series: [
      {
        name: '信息',   // series名称
        type: 'effectScatter',    // series图表类型
        effectType: 'ripple',     // 圆点闪烁样式,目前只支持ripple波纹式
        coordinateSystem: 'geo',   // series坐标系类型
        data:convertData(this.state.vmData),// series数据内容
        showEffectOn: 'emphasis',    //配置何时显示特效 render 一直显示,emphasis放上去显示
        symbolSize: function (val) {
          return val[2] / 10;
        },
        rippleEffect: {        // ripple的样式控制
         brushType: 'stroke',
         color: '#28FF28',
        },
        label: {
          normal: {
            formatter: '{b}',
            position: 'right',
            show: true   //显示位置信息,
          }
        },

        itemStyle: {         //散点本身显示控制
         normal: {
           color: '#28FF28',
           shadowBlur: 10,
           shadowColor: '#28FF28'
         }
        },
        zlevel: 1
      }
     ],
     symbolSize: 12,
   }
   if (option && typeof option === "object") {
     mapChart.setOption(option);
   }
  }
  render() {
   return (
     <div className="cloudhost-box">
        <div id="map" style={{width: '1100px',height: '550px',mergeLeft:"0px"}} />
     </div>
   );
  }
}
 
export default LayoutImg;

效果图如下:

附:有什么其它的相关配置可以看官网再做具体修改recharts地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • react中路由和按需加载的问题

    react中路由和按需加载的问题

    这篇文章主要介绍了react中路由和按需加载的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • react-native滑动吸顶效果的实现过程

    react-native滑动吸顶效果的实现过程

    这篇文章主要给大家介绍了关于react-native滑动吸顶效果的实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用react-native具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • antd form表单如何处理自定义组件

    antd form表单如何处理自定义组件

    这篇文章主要介绍了antd form表单如何处理自定义组件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 使用 React hooks 实现类所有生命周期

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

    react 自 16.8 开始,引入了 Hooks 概念,使得函数组件中也可以拥有自己的状态,并且可以模拟对应的生命周期,这篇文章主要介绍了使用 React hooks 怎么实现类里面的所有生命周期,需要的朋友可以参考下
    2023-02-02
  • 六分钟带你快速学会react中的useMemo

    六分钟带你快速学会react中的useMemo

    简单说React.memo()是通过校验props中的数据是否改变的来决定组件是否需要重新渲染的一种缓存技术,下面这篇文章主要给大家介绍了关于如何快速学会react中useMemo的相关资料,需要的朋友可以参考下
    2022-12-12
  • React router cache route实现缓存页面流程介绍

    React router cache route实现缓存页面流程介绍

    react-router自身没有路由缓存的特性,在5.x版本之前,我们可以基于react-router-cache-route来实现路由缓存功能。但是react-router 6.x在实现上做了比较大的变化,react-router-cache-route没有提供相应的支持
    2023-01-01
  • React props全面详细解析

    React props全面详细解析

    props 是 React 组件通信最重要的手段,它在 React 的世界中充当的角色是十分重要的。学好 props 可以使组件间通信更加灵活,同时文中会介绍一些 props 的操作技巧,和学会如何编写嵌套组件
    2022-10-10
  • react项目中如何引入国际化

    react项目中如何引入国际化

    在React项目中引入国际化可以使用第三方库来实现,本文主要介绍了react项目中如何引入国际化,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 用React实现一个类 chatGPT 的交互式问答组件的方法详解

    用React实现一个类 chatGPT 的交互式问答组件的方法详解

    这篇文章主要给大家详细介绍如何用React实现一个类 chatGPT 的交互式问答组件的方法,文中有详细的代码示例,对我们学习有一定的帮助,需要的朋友可以参考下
    2023-06-06
  • React中映射一个嵌套数组实现demo

    React中映射一个嵌套数组实现demo

    这篇文章主要为大家介绍了React中映射一个嵌套数组实现demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论