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

最终展示效果如下:

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

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

  1. import echarts from 'echarts';
  2. import 'echarts/map/js/china';
  3. import geoJson from 'echarts/map/json/china.json';
  4. 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生命周期中调用:

 
  1. componentDidMount() {
  2. this.initalECharts();
  3. }
  4. initalECharts() {
  5. const data = [
  6. {name: '上海', area: '华东大区', type: 'areaCenterCity'},
  7. {name: '深圳', area: '华南大区', type: 'areaCenterCity'},
  8. {name: '成都', area: '华西大区', type: 'areaCenterCity'},
  9. {name: '北京', area: '华北大区', type: 'areaCenterCity'},
  10. {name: '武汉', area: '华中大区', type: 'areaCenterCity'},
  11. {name: '沈阳', area: '东北大区', type: 'areaCenterCity'},
  12. ];
  13. echarts.registerMap('zhongguo', geoJson);
  14. for(let item of provienceData){
  15. if(item.area === '东北大区'){
  16. item.itemStyle = {
  17. normal: {
  18. areaColor: "#3CA2FC",
  19. },
  20. emphasis: {
  21. areaColor: "#3CA2FC",
  22. }
  23. }
  24. }else if(item.area === '华北大区'){
  25. item.itemStyle = {
  26. normal: {
  27. areaColor: "#6CAFBE",
  28. },
  29. emphasis: {
  30. areaColor: "#6CAFBE",
  31. }
  32. }
  33. }else if(item.area === '华中大区'){
  34. item.itemStyle = {
  35. normal: {
  36. areaColor: "#ADD03C",
  37. },
  38. emphasis: {
  39. areaColor: "#ADD03C",
  40. }
  41. }
  42. }else if(item.area === '华东大区'){
  43. item.itemStyle = {
  44. normal: {
  45. areaColor: "#A13614",
  46. },
  47. emphasis: {
  48. areaColor: "#A13614",
  49. }
  50. }
  51. }else if(item.area === '华西大区'){
  52. item.itemStyle = {
  53. normal: {
  54. areaColor: "#FFBA00",
  55. },
  56. emphasis: {
  57. areaColor: "#FFBA00",
  58. }
  59. }
  60. }else if(item.area === '华南大区'){
  61. item.itemStyle = {
  62. normal: {
  63. areaColor: "#FFD300",
  64. },
  65. emphasis: {
  66. areaColor: "#FFD300",
  67. }
  68. }
  69. }else if(item.area === '南海诸岛'){
  70. item.itemStyle = {
  71. normal: {
  72. borderColor: '#fff',//区域边框颜色
  73. areaColor:"#fff",//区域颜色
  74. },
  75. emphasis: {
  76. show: false,
  77. // borderColor: '#fff',
  78. // areaColor:"#fff",
  79. }
  80. }
  81. }else{
  82. item.itemStyle = {
  83. normal: {
  84. areaColor: "#D9D9D9",
  85. },
  86. emphasis: {
  87. areaColor: "#D9D9D9",
  88. }
  89. }
  90. }
  91. }
  92. const myChart = echarts.init(document.getElementById('mainMap'));
  93. myChart.setOption({
  94. tooltip: {
  95. show: false, //不显示提示标签
  96. formatter: '{b}', //提示标签格式
  97. backgroundColor:"#ff7f50",//提示标签背景颜色
  98. textStyle:{color:"#fff"} //提示标签字体颜色
  99. },
  100. grid: {
  101. left: '10%',
  102. right: '10%',
  103. top: '10%',
  104. bottom: '10%',
  105. containLabel: true
  106. },
  107. geo: {
  108. map: 'china',
  109. roam: false,
  110. zoom: 1.2,
  111. tooltip: {
  112. show: false, //不显示提示标签
  113. },
  114. label: {
  115. normal: {
  116. show: false,//显示省份标签
  117. textStyle:{color:"#c71585"}//省份标签字体颜色
  118. },
  119. emphasis: {//对应的鼠标悬浮效果
  120. show: false,
  121. textStyle:{color:"#800080"}
  122. }
  123. },
  124. itemStyle: {
  125. normal: {
  126. borderWidth: .5,//区域边框宽度
  127. borderColor: '#fff',//区域边框颜色
  128. areaColor:"#ffefd5",//区域颜色
  129. label:{show:false}
  130. },
  131. emphasis: {
  132. show: false,
  133. borderWidth: .5,
  134. borderColor: '#4b0082',
  135. areaColor: "#ffdead",
  136. }
  137. },
  138. },
  139. series: [
  140. {
  141. type: 'scatter',
  142. coordinateSystem: 'geo',
  143. data: this.convertData(data),
  144. symbolSize: 20,
  145. symbolRotate: 35,
  146. label: {
  147. normal: {
  148. formatter: '{b}',
  149. position: 'right',
  150. show: true
  151. },
  152. emphasis: {
  153. show: false
  154. }
  155. },
  156. tooltip: {
  157. show: false, //不显示提示标签
  158. formatter: '{c}', //提示标签格式
  159. backgroundColor: "#fff",//提示标签背景颜色
  160. borderColor: '#ccc',
  161. borderWidth: .5,
  162. textStyle:{color:"#000"} //提示标签字体颜色
  163. },
  164. itemStyle: {
  165. normal: {
  166. color: '#57c610'
  167. }
  168. }
  169. },
  170. {
  171. type: 'map',
  172. mapType: 'china',
  173. roam: false,
  174. zoom: 1.2,
  175. tooltip: {
  176. show: false, //不显示提示标签
  177. },
  178. label: {
  179. normal: {
  180. show: false //显示省份标签
  181. },
  182. emphasis: {
  183. show: false,
  184. }
  185. },
  186. itemStyle: {
  187. normal: {
  188. borderWidth: .5, //区域边框宽度
  189. borderColor: '#fff', //区域边框颜色
  190. label:{show:false}
  191. },
  192. emphasis: {
  193. show: false,
  194. }
  195. },
  196. // geoIndex: 0,
  197. // tooltip: {show: false},
  198. data: provienceData
  199. }
  200. ],
  201. })
  202. }
  203. convertData(data) {
  204. var res = [];
  205. for (var i = 0; i < data.length; i++) {
  206. var geoCoord = geoCoordMap[data[i].name];
  207. if (geoCoord) {
  208. res.push({
  209. name: data[i].name,
  210. value: geoCoord.concat(data[i].area),
  211. area: data[i].area,
  212. type: data[i].type,
  213. });
  214. }
  215. }
  216. console.log(res);
  217. return res;
  218. }

代码我放在了码云里面:

 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. clean code 第一章笔记

    我们都曾有过这样的经历:自己写的烂程序竟然可以运行,然后就认为能运行的烂代码总比什么都没有强.还会有这样的想法:总有一天我会修改它.但是,LeBlanc(勒布朗)法则表示:稍后等于永不(Later e ...

  2. Android xmlns 的作用及其自定义

    转自:http://blog.csdn.net/chuchu521/article/details/8052855 xmlns:Android="http://schemas.android ...

  3. iis添加共享目录为虚拟目录

    注意物理路径处不能直接选择映射成的本地盘符!!!

  4. CSS3,transform3D立体可拖拽正方体实现原理

    ---恢复内容开始--- 今天咱们来说一下,CSS中的3D效果 .如果你把transform真的掌握的和纯熟的话,就可以直接通过CSS做出很多很炫酷的效果,甚至.轮播图和选项卡都可以通过CSS来做,咱 ...

  5. 文字编辑器FCKeditor 简介以及基本配置和使用方法

    什么是FCKeditor FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器.它志于轻量化,不需要太复杂的安装步骤即可使用.它可和PHP.JavaScript.ASP.ASP ...

  6. KMP算法的一个简单实现

    今天学习KMP算法,参考网上内容,实现算法,摘录网页内容并记录自己的实现如下: 原文出处: http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93M ...

  7. Python爬虫教程-26-Selenium + PhantomJS

    Python爬虫教程-26-Selenium + PhantomJS 动态前端页面 : JavaScript: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持 ...

  8. silverlight generic.xaml 包含中文 编译错误的问题

    发现我在一个dll工程里面新建一个xaml文件起名成generic.xaml 如果这个xaml里面存在中文则会编译错误,发现这样建立的xaml使用的是gb2312编码 果断文件-另存为-编码另存为 u ...

  9. Spring boot配置注意事项

    SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描! “Application类”是指SpringBoot项目入口类.这个类的位置很关键: 如果App ...

  10. JS获取屏幕分辨率以及当前对象大小等

    <script type="text/javascript"> function getInfo(){ var s = ""; s += " ...