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


Posted in Javascript onDecember 07, 2018

一、前端框架react+ant design UI

二、首先安装recharts

npm install recharts

或者

yarn add recharts

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

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

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实现散点地图的示例代码

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

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

Javascript 相关文章推荐
JavaScript 嵌套函数指向this对象错误的解决方法
Mar 15 Javascript
jQuery中filter(),not(),split()使用方法
Jul 06 Javascript
浅谈Sizzle的“编译原理”
Apr 14 Javascript
Javascript实现苹果悬浮虚拟按钮
Apr 10 Javascript
深入剖析javascript中的exec与match方法
May 18 Javascript
全面了解JavaScript的数据类型转换
Jul 01 Javascript
react native仿微信PopupWindow效果的实例代码
Aug 07 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
Aug 30 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
Jan 16 Javascript
vue+axios实现文件下载及vue中使用axios的实例
Sep 21 Javascript
vue实现购物车案例
May 30 Javascript
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
如何手动实现es5中的bind方法详解
Dec 07 #Javascript
JavaScript时间与时间戳的转换操作实例分析
Dec 07 #Javascript
vue+SSM实现验证码功能
Dec 07 #Javascript
详解如何为你的angular app构建一个第三方库
Dec 07 #Javascript
JS实现随机生成10个手机号的方法示例
Dec 07 #Javascript
angular学习之动态创建表单的方法
Dec 07 #Javascript
JavaScript栈和队列相关操作与实现方法详解
Dec 07 #Javascript
You might like
ThinkPHP3.1查询语言详解
2014/06/19 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
python实现批量修改文件名
2020/03/23 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
计算机专业学生求职信分享
2013/12/15 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
校园文化标语
2014/06/18 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
小学生表扬稿范文
2015/05/05 职场文书
论文答辩开场白大全
2015/05/27 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
导游词之太湖
2019/10/08 职场文书