You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

187 lines
4.4 KiB

  1. //地图容器
  2. var chart = echarts.init(document.getElementById('main'));
  3. //34个省、市、自治区的名字拼音映射数组
  4. var provinces = {
  5. //23个省
  6. "台湾": "taiwan",
  7. "河北": "hebei",
  8. "山西": "shanxi",
  9. "辽宁": "liaoning",
  10. "吉林": "jilin",
  11. "黑龙江": "heilongjiang",
  12. "江苏": "jiangsu",
  13. "浙江": "zhejiang",
  14. "安徽": "anhui",
  15. "福建": "fujian",
  16. "江西": "jiangxi",
  17. "山东": "shandong",
  18. "河南": "henan",
  19. "湖北": "hubei",
  20. "湖南": "hunan",
  21. "广东": "guangdong",
  22. "海南": "hainan",
  23. "四川": "sichuan",
  24. "贵州": "guizhou",
  25. "云南": "yunnan",
  26. "陕西": "shanxi1",
  27. "甘肃": "gansu",
  28. "青海": "qinghai",
  29. //5个自治区
  30. "新疆": "xinjiang",
  31. "广西": "guangxi",
  32. "内蒙古": "neimenggu",
  33. "宁夏": "ningxia",
  34. "西藏": "xizang",
  35. //4个直辖市
  36. "北京": "beijing",
  37. "天津": "tianjin",
  38. "上海": "shanghai",
  39. "重庆": "chongqing",
  40. //2个特别行政区
  41. "香港": "xianggang",
  42. "澳门": "aomen"
  43. };
  44. //直辖市和特别行政区-只有二级地图,没有三级地图
  45. var special = ["北京","天津","上海","重庆","香港","澳门"];
  46. var mapdata = [];
  47. //绘制全国地图
  48. $.getJSON('static/map/china.json', function(data){
  49. d = [];
  50. for( var i=0;i<data.features.length;i++ ){
  51. d.push({
  52. name:data.features[i].properties.name
  53. })
  54. }
  55. mapdata = d;
  56. //注册地图
  57. echarts.registerMap('china', data);
  58. //绘制地图
  59. renderMap('china',d);
  60. });
  61. //地图点击事件
  62. chart.on('click', function (params) {
  63. console.log( params );
  64. if( params.name in provinces ){
  65. //如果点击的是34个省、市、自治区,绘制选中地区的二级地图
  66. $.getJSON('static/map/province/'+ provinces[params.name] +'.json', function(data){
  67. echarts.registerMap( params.name, data);
  68. var d = [];
  69. for( var i=0;i<data.features.length;i++ ){
  70. d.push({
  71. name:data.features[i].properties.name
  72. })
  73. }
  74. renderMap(params.name,d);
  75. });
  76. }else if( params.seriesName in provinces ){
  77. //如果是【直辖市/特别行政区】只有二级下钻
  78. if( special.indexOf( params.seriesName ) >=0 ){
  79. renderMap('china',mapdata);
  80. }else{
  81. //显示县级地图
  82. $.getJSON('static/map/city/'+ cityMap[params.name] +'.json', function(data){
  83. echarts.registerMap( params.name, data);
  84. var d = [];
  85. for( var i=0;i<data.features.length;i++ ){
  86. d.push({
  87. name:data.features[i].properties.name
  88. })
  89. }
  90. renderMap(params.name,d);
  91. });
  92. }
  93. }else{
  94. renderMap('china',mapdata);
  95. }
  96. });
  97. //初始化绘制全国地图配置
  98. var option = {
  99. backgroundColor: '#000',
  100. title : {
  101. text: 'Echarts3 中国地图下钻至县级',
  102. subtext: '三级下钻',
  103. link:'http://www.ldsun.com',
  104. left: 'center',
  105. textStyle:{
  106. color: '#fff',
  107. fontSize:16,
  108. fontWeight:'normal',
  109. fontFamily:"Microsoft YaHei"
  110. },
  111. subtextStyle:{
  112. color: '#ccc',
  113. fontSize:13,
  114. fontWeight:'normal',
  115. fontFamily:"Microsoft YaHei"
  116. }
  117. },
  118. tooltip: {
  119. trigger: 'item',
  120. formatter: '{b}'
  121. },
  122. toolbox: {
  123. show: true,
  124. orient: 'vertical',
  125. left: 'right',
  126. top: 'center',
  127. feature: {
  128. dataView: {readOnly: false},
  129. restore: {},
  130. saveAsImage: {}
  131. },
  132. iconStyle:{
  133. normal:{
  134. color:'#fff'
  135. }
  136. }
  137. },
  138. animationDuration:1000,
  139. animationEasing:'cubicOut',
  140. animationDurationUpdate:1000
  141. };
  142. function renderMap(map,data){
  143. option.title.subtext = map;
  144. option.series = [
  145. {
  146. name: map,
  147. type: 'map',
  148. mapType: map,
  149. roam: false,
  150. nameMap:{
  151. 'china':'中国'
  152. },
  153. label: {
  154. normal:{
  155. show:true,
  156. textStyle:{
  157. color:'#999',
  158. fontSize:13
  159. }
  160. },
  161. emphasis: {
  162. show: true,
  163. textStyle:{
  164. color:'#fff',
  165. fontSize:13
  166. }
  167. }
  168. },
  169. itemStyle: {
  170. normal: {
  171. areaColor: '#323c48',
  172. borderColor: 'dodgerblue'
  173. },
  174. emphasis: {
  175. areaColor: 'darkorange'
  176. }
  177. },
  178. data:data
  179. }
  180. ];
  181. //渲染地图
  182. chart.setOption(option);
  183. }