最近的项目要用到一个能展现全国地图的功能,并且全国各个省份显示的颜色不同,点击省份后会返回省份名称。经过反复的查找最终确定了echart这个插件,最后的成果还不错,在这里写下来希望对大家有所帮助。话不多说先看最终的效果图。
最终的效果就是这个样子的啦,感觉还是很好看的,echart这个插件使用还是很简单的,按照官网步骤来就好了。官网地址:http://echarts.baidu.com/index.html
下面就是我实现这个效果的代码了:
1 <!DOCTYPE html> 2 <html style="height: 100%"> 3 4 <head> 5 <meta charset="utf-8"> 6 </head> 7 8 <body style="height: 100%; margin: 0"> 9 <div id="container" style="height: 100%"></div> 10 <script type="text/javascript" src="js/echarts.min.js"></script> 11 12 <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/map/js/china.js"></script> 13 14 <script type="text/javascript"> 15 var myChart = echarts.init(document.getElementById("container")); 16 17 option = { 18 19 tooltip: { 20 trigger: \'item\', 21 formatter: \'{b}\' 22 }, 23 24 series: [{ 25 name: \'中国\', 26 type: \'map\', 27 mapType: \'china\', 28 selectedMode: \'single\', 29 roam: false, 30 label: { 31 normal: { 32 show: true 33 }, 34 emphasis: { 35 show: true 36 } 37 }, 38 data: [{ 39 name: \'北京\', 40 itemStyle: { 41 normal: { 42 areaColor: \'#D9EDE1\' 43 } 44 } 45 }, 46 { 47 name: \'天津\', 48 itemStyle: { 49 normal: { 50 areaColor: \'#D9EDE1\' 51 } 52 } 53 }, 54 { 55 name: \'上海\', 56 itemStyle: { 57 normal: { 58 areaColor: \'#FCE1D8\' 59 } 60 } 61 }, 62 { 63 name: \'重庆\', 64 itemStyle: { 65 normal: { 66 areaColor: \'#FBE0EC\' 67 } 68 } 69 }, 70 { 71 name: \'河北\', 72 itemStyle: { 73 normal: { 74 areaColor: \'#FFFDE4\' 75 } 76 } 77 }, 78 { 79 name: \'河南\', 80 itemStyle: { 81 normal: { 82 areaColor: \'#FBE0EC\' 83 } 84 } 85 }, 86 { 87 88 name: \'云南\', 89 itemStyle: { 90 normal: { 91 areaColor: \'#FBE0EC\' 92 } 93 } 94 }, 95 { 96 name: \'辽宁\', 97 itemStyle: { 98 normal: { 99 areaColor: \'#FCE1D8\' 100 } 101 } 102 }, 103 { 104 name: \'黑龙江\', 105 itemStyle: { 106 normal: { 107 areaColor: \'#FCE1D8\' 108 } 109 } 110 }, 111 { 112 name: \'湖南\', 113 itemStyle: { 114 normal: { 115 areaColor: \'#D7EDFB\' 116 } 117 } 118 }, 119 { 120 name: \'安徽\', 121 itemStyle: { 122 normal: { 123 areaColor: \'#FCE1D8\' 124 } 125 } 126 }, 127 { 128 name: \'山东\', 129 itemStyle: { 130 normal: { 131 areaColor: \'#D9EDE1\' 132 } 133 } 134 }, 135 { 136 name: \'新疆\', 137 itemStyle: { 138 normal: { 139 areaColor: \'#D7EDFB\' 140 } 141 } 142 }, 143 { 144 name: \'江苏\', 145 itemStyle: { 146 normal: { 147 areaColor: \'#D7EDFB\' 148 } 149 } 150 }, 151 { 152 name: \'浙江\', 153 itemStyle: { 154 normal: { 155 areaColor: \'#D9EDE1\' 156 } 157 } 158 }, 159 { 160 name: \'江西\', 161 itemStyle: { 162 normal: { 163 areaColor: \'#FBE0EC\' 164 } 165 } 166 }, 167 { 168 name: \'湖北\', 169 itemStyle: { 170 normal: { 171 areaColor: \'#FFFDE4\' 172 } 173 }, 174 selected: true 175 }, 176 { 177 name: \'广西\', 178 itemStyle: { 179 normal: { 180 areaColor: \'#D9EDE1\' 181 } 182 } 183 }, 184 { 185 name: \'甘肃\', 186 itemStyle: { 187 normal: { 188 areaColor: \'#FFFDE4\' 189 } 190 } 191 }, 192 { 193 name: \'山西\', 194 itemStyle: { 195 normal: { 196 areaColor: \'#D9EDE1\' 197 } 198 } 199 }, 200 { 201 name: \'内蒙古\', 202 itemStyle: { 203 normal: { 204 areaColor: \'#D7EDFB\' 205 } 206 } 207 }, 208 { 209 name: \'陕西\', 210 itemStyle: { 211 normal: { 212 areaColor: \'#FCE1D8\' 213 } 214 } 215 }, 216 { 217 name: \'吉林\', 218 itemStyle: { 219 normal: { 220 areaColor: \'#FFFDE4\' 221 } 222 } 223 }, 224 { 225 name: \'福建\', 226 itemStyle: { 227 normal: { 228 areaColor: \'#D7EDFB\' 229 } 230 } 231 }, 232 { 233 name: \'贵州\', 234 itemStyle: { 235 normal: { 236 areaColor: \'#FFFDE4\' 237 } 238 } 239 }, 240 { 241 name: \'广东\', 242 itemStyle: { 243 normal: { 244 areaColor: \'#FCE1D8\' 245 } 246 } 247 }, 248 { 249 name: \'青海\', 250 itemStyle: { 251 normal: { 252 areaColor: \'#FBE0EC\' 253 } 254 } 255 }, 256 { 257 name: \'西藏\', 258 itemStyle: { 259 normal: { 260 areaColor: \'#FFFDE4\' 261 } 262 } 263 }, 264 { 265 name: \'四川\', 266 itemStyle: { 267 normal: { 268 areaColor: \'#D9EDE1\' 269 } 270 } 271 }, 272 { 273 name: \'宁夏\', 274 itemStyle: { 275 normal: { 276 areaColor: \'#FBE0EC\' 277 } 278 } 279 }, 280 { 281 name: \'海南\', 282 itemStyle: { 283 normal: { 284 areaColor: \'#FBE0EC\' 285 } 286 } 287 }, 288 { 289 name: \'台湾\', 290 itemStyle: { 291 normal: { 292 areaColor: \'#FBE0EC\' 293 } 294 } 295 }, 296 { 297 name: \'香港\', 298 itemStyle: { 299 normal: { 300 areaColor: \'#FCE1D8\' 301 } 302 } 303 }, 304 { 305 name: \'澳门\', 306 itemStyle: { 307 normal: { 308 areaColor: \'#FCE1D8\' 309 } 310 } 311 }, 312 { 313 name: \'南海诸岛\', 314 itemStyle: { 315 normal: { 316 areaColor: \'#FCE1D8\' 317 } 318 } 319 } 320 ] 321 }] 322 }; 323 324 myChart.setOption(option, true); 325 </script> 326 </body> 327 328 </html>
这部分代码只引用了一个js文件,这个官网就可以下载的到,最后还有两个细节的部分提醒大家:
1.点击省份返回省份信息
1 myChart.on(\'click\', function(params) { 2 console.log(params.name); 3 });
只要有这部分代码就可以实现点击省份返回省份名称的功能啦!
2.关于地图的大小问题
尽管地图的大小和echart的容器大小挂钩,但是地图在容器内并不是全部占满的,这样就会影响一部分的美观,解决这个问题。只要添加一个属性就可以 了。
1 series: [{ 2 name: \'中国\', 3 type: \'map\', 4 mapType: \'china\', 5 selectedMode: \'single\', 6 roam: false, 7 zoom: 1.2, 8 label: { 9 normal: { 10 show: true 11 }, 12 emphasis: { 13 show: true 14 } 15 }, 16 ...}]
注意 zoom: 1.2 这个属性是让地图放大的关键,看一下效果对比图
放大前:
放大地图后:
在容器大小一致的情况下,地图明显变大了。
好了,这就是我在项目中遇到的一个小小的问题,已经解决了,也希望对大家有所帮助,大家如果有更好的实现方式也欢迎在评论中提出。