欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-30 20:22:15
一、前端框架react+ant design ui 二、首先安装recharts npm install recharts 或者 yar...

一、前端框架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;

效果图如下:

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

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

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