日常项目中经常会用到百度地图或者echarts图标展示,今天给大家展示的是如何在react开发项目中使用百度echars的地图展示,把中国地图分为东北大区、华东大区、华南大区、华西大区、华中大区以及华北大区并用颜色标识方便识别。

最终展示效果如下:

我是直接用的react官方提供的create-react-app快速构建开发环境,之后就是cnpm install --save echarts 安装echarts依赖了。

在项目中引入echarts以及中国地图数据,并引入模拟的大区地图数据。

import echarts from 'echarts';
import 'echarts/map/js/china';
import geoJson from 'echarts/map/json/china.json';
import {geoCoordMap,provienceData} from "./geo";
geo.js是模拟的大区地图数据,由于现在echarts地图数据在线生成工具不能使用,为我们的开发带来许多不便,但我们仍能从以前的开发列子中找到生成方法,具体推荐大家观看官方社区地图实例:
http://gallery.echartsjs.com/explore.html#charts=map~sort=rank~timeframe=all~author=all
 刚开始看echarts也被里面的各种配置参数所迷糊,但写了几遍后不难理解地图是如何构建的,最主要的是在setOption里面的option参数,其中尤其series配置参数最为重要,根据需要展示的地图,把地图分为map、scatter两类,在分别对两个参数进行配置修改,具体的实现是在initalECharts方法里面,并在componentDidMount生命周期中调用:

 
    componentDidMount() {
this.initalECharts();
}
initalECharts() {
const data = [
{name: '上海', area: '华东大区', type: 'areaCenterCity'},
{name: '深圳', area: '华南大区', type: 'areaCenterCity'},
{name: '成都', area: '华西大区', type: 'areaCenterCity'},
{name: '北京', area: '华北大区', type: 'areaCenterCity'},
{name: '武汉', area: '华中大区', type: 'areaCenterCity'},
{name: '沈阳', area: '东北大区', type: 'areaCenterCity'},
];
echarts.registerMap('zhongguo', geoJson);
for(let item of provienceData){
if(item.area === '东北大区'){
item.itemStyle = {
normal: {
areaColor: "#3CA2FC",
},
emphasis: {
areaColor: "#3CA2FC",
}
}
}else if(item.area === '华北大区'){
item.itemStyle = {
normal: {
areaColor: "#6CAFBE",
},
emphasis: {
areaColor: "#6CAFBE",
}
}
}else if(item.area === '华中大区'){
item.itemStyle = {
normal: {
areaColor: "#ADD03C",
},
emphasis: {
areaColor: "#ADD03C",
}
}
}else if(item.area === '华东大区'){
item.itemStyle = {
normal: {
areaColor: "#A13614",
},
emphasis: {
areaColor: "#A13614",
}
}
}else if(item.area === '华西大区'){
item.itemStyle = {
normal: {
areaColor: "#FFBA00",
},
emphasis: {
areaColor: "#FFBA00",
}
}
}else if(item.area === '华南大区'){
item.itemStyle = {
normal: {
areaColor: "#FFD300",
},
emphasis: {
areaColor: "#FFD300",
}
}
}else if(item.area === '南海诸岛'){
item.itemStyle = {
normal: {
borderColor: '#fff',//区域边框颜色
areaColor:"#fff",//区域颜色
},
emphasis: {
show: false,
// borderColor: '#fff',
// areaColor:"#fff",
}
}
}else{
item.itemStyle = {
normal: {
areaColor: "#D9D9D9",
},
emphasis: {
areaColor: "#D9D9D9",
}
}
}
}
const myChart = echarts.init(document.getElementById('mainMap'));
myChart.setOption({
tooltip: {
show: false, //不显示提示标签
formatter: '{b}', //提示标签格式
backgroundColor:"#ff7f50",//提示标签背景颜色
textStyle:{color:"#fff"} //提示标签字体颜色
},
grid: {
left: '10%',
right: '10%',
top: '10%',
bottom: '10%',
containLabel: true
},
geo: {
map: 'china',
roam: false,
zoom: 1.2,
tooltip: {
show: false, //不显示提示标签
},
label: {
normal: {
show: false,//显示省份标签
textStyle:{color:"#c71585"}//省份标签字体颜色
},
emphasis: {//对应的鼠标悬浮效果
show: false,
textStyle:{color:"#800080"}
}
},
itemStyle: {
normal: {
borderWidth: .5,//区域边框宽度
borderColor: '#fff',//区域边框颜色
areaColor:"#ffefd5",//区域颜色
label:{show:false}
},
emphasis: {
show: false,
borderWidth: .5,
borderColor: '#4b0082',
areaColor: "#ffdead",
}
},
},
series: [
{
type: 'scatter',
coordinateSystem: 'geo',
data: this.convertData(data),
symbolSize: 20,
symbolRotate: 35,
label: {
normal: {
formatter: '{b}',
position: 'right',
show: true
},
emphasis: {
show: false
}
},
tooltip: {
show: false, //不显示提示标签
formatter: '{c}', //提示标签格式
backgroundColor: "#fff",//提示标签背景颜色
borderColor: '#ccc',
borderWidth: .5,
textStyle:{color:"#000"} //提示标签字体颜色
},
itemStyle: {
normal: {
color: '#57c610'
}
}
},
{
type: 'map',
mapType: 'china',
roam: false,
zoom: 1.2,
tooltip: {
show: false, //不显示提示标签
},
label: {
normal: {
show: false //显示省份标签
},
emphasis: {
show: false,
}
},
itemStyle: {
normal: {
borderWidth: .5, //区域边框宽度
borderColor: '#fff', //区域边框颜色
label:{show:false}
},
emphasis: {
show: false,
}
},
// geoIndex: 0,
// tooltip: {show: false},
data: provienceData
}
],
})
}
convertData(data) {
var res = [];
for (var i = 0; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if (geoCoord) {
res.push({
name: data[i].name,
value: geoCoord.concat(data[i].area),
area: data[i].area,
type: data[i].type,
});
}
}
console.log(res);
return res;
}

代码我放在了码云里面:

 https://gitee.com/jianrun/echartsmap.git

react使用echarts地图实现中国地图大区展示的更多相关文章

  1. 16、vue引入echarts,划中国地图

    vue引入echarts npm install echarts --save main.js引入 import echarts from 'echarts' Vue.prototype.$echar ...

  2. 使用echarts简单制作中国地图,echarts中国地图

    网站需要一张中国地图,并且鼠标经过某个省份,该省份的省份名字显示,而且该省份的地区会变色显示. 第一种方法: 将每个省份的图片定位(先隐藏),拼合成一张中国地图,然后再定位省份名称,鼠标经过省份名字, ...

  3. 用echarts.js制作中国地图,点击对应的省市链接到指定页面

    这里使用的是ECharts 2,因为用EChart 3制作的地图上的省市文字标识会有重叠,推测是引入的地图文件china.js,绘制文字的坐标方面的问题,所以,这里还是使用老版本. ECharts 2 ...

  4. echarts.js制作中国地图

    一.准备 1.  打开sublime,新建一个echarts文件夹,新建echarts.html文件 2.  在echarts.html文件中,为ECharts准备一个Dom(id是china-map ...

  5. 一个让echarts中国地图包含省市轮廓的技巧

    背景知识及应用简介 本文主要介绍一个使用ECharts地图组件的取巧方法,该技巧源于实际需求中遇到的问题,一般没有该需求的话这个技巧也是用不到的.有前端基础和以及对ECharts有了解的人基本可以读懂 ...

  6. echarts 某省下钻某市地图

    因为最近工作需要,接触到了highcharts 与echarts ,对比了一下,目前公司系统用的是highcharts的图表插件,就不想再去用echarts的图标插件了,奈何highcharts地图对 ...

  7. D3.js中国地图下钻

    使用d3.js实现中国地图及中国地图下钻到省市区 在可视化开发中,地图是很重要的一个环节,很多时候需要展现的不仅是国家地图,还需要能从国家进入到省市,看到区这样的下钻过程,今天我们就来实现这个效果. ...

  8. echarts.制作中国地图,点击对应的省市链接到该省份的详细介绍

    今天花了一天的时间,用echart弄了一个效果,是从中国地图点进去身份并把改省份的数据渲染出来的效果,刚开始完全没有头绪,只能硬着头皮去看百度echart的api,和博客,看了半天,好家伙,终于给我找 ...

  9. Echarts 中国地图(包括china.js文件)

    用Echarts写中国地图需要导入china.js(现在官方不提供下载,个人找的在最下面有),根据需要的效果如下.位置可以自己在option里面修改 <!DOCTYPE html> < ...

随机推荐

  1. PHPStorm-Mintfy-And-Color-Schema

    美化Php-storm 1.隐藏一些工具条 打开一个项目后我习惯把一些工具条隐藏,在view菜单中把Tool buttons,Status bar,Navigation bar. CTRL+E 切换当 ...

  2. php动态链接扩展库

    文章来源:http://keping.me/php-call-so/ PHP调用C/C++动态链接库 David June 19, 2013 C++, Linux, Study 摘要 有时候,单纯依靠 ...

  3. safari兼容时间格式

    前提: 使用iview的DatePicker组件,保存时间后台接收时间戳 问题: safari中不支持2018-02-13这种格式转为时间戳会显示NaN 解决: new Date('2018/02/1 ...

  4. vue.js与angular.js的区别(个人)

    刚进入实训 讲师就要发一些什么比较高大上的东西,本人才疏学浅  浅浅的分享一下angularjs 和vue.js的区别.只是简单的理解一下 大神勿喷. 生实训之前学习的angular.js 只是理解了 ...

  5. easyui numberbox输入框 编辑不可编辑的切换

    背景:申请单里需要选费用类型,费用类型有的有子明细项,有个合计项    当有子明细项的时候,合计项的值是通过弹出的子明细项价格的总和(设置为可编辑没问题,因为点击出来弹框,编辑不了)    没有子明细 ...

  6. c# 读取txt文件并分隔

    public static List<PostPerson> GetNameByFile() { #region 读取txt文件 var file = File.Open(Environm ...

  7. SQL Server ->> 利用CONVERT/STR/FORMAT函数把浮点型数据格式化/转换成字符串

    在SQL Server下想把数字(包括浮点型和整型)转换成字符串,保留数据原本的样子或者根据需要转换成另外指定的格式可能就不仅仅是一条CAST(XXXX AS NVARCHAR)这么简单的事情了. 无 ...

  8. Linux 学习笔记之关机问题

    在linux领域内大多用在服务器上,很少遇到关机的操作. 正确的关机流程为:sync > shutdown > reboot > halt 关机指令为:shutdown ,你可以ma ...

  9. using log4net on my project within a self-hosted WCF application z

    Add reference to log4net.dll to our console service host project (our application entry point) Add t ...

  10. editplus 格式化 js、html、xml、css

    没有文件扩展”js”的脚本引擎的问题的解决办法 解决办法如下: 打开注册表编辑器,定位"HKEY_CLASSES_ROOT" > ".js" 这一项,双击 ...