ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] * * * * * ## `Echarts-China` 实现中国地图 > 这个Demo可以实现的内容是: > 1.绘制基本的中国地图,标识每个省的颜色,放大和缩小及拖动; > 2.可以在地图上标出某个坐标(经纬度),并用不同的样式显示; > 3.点击地图上某个区域后会触发点击事件 ### 1. 效果图 ![](https://box.kancloud.cn/5b5aec804fb083385d44f807f928ada7_825x638.png) * * * * * ### 2. 需要的`js`包 ~~~ jquery-2.1.4.min.js echarts-4.0.2.min.js 如果要看错误提示等,可以下载源码包,2M多;压缩版的687KB china.js 这里定义了绘制中国地图所需要的数据。 也可以调用百度的接口获取数据,但我此时不需要那些东西,就想要个简单的地图。 map-china.js 我自定义 ~~~ * * * * * ### 3. `map-china.html` ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>map-china</title> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <style type="text/css"> html,body{ margin: 0; padding: 0; font-size: 12px; } .wrap{ padding: 2rem; margin: 2rem; border: solid 1px grey; border-radius: 0.5rem; } </style> </head> <body> <!-- 长度和宽度必须设置 --> <div class="wrap" id="map" style="width: 500px; height: 375px;"></div> <!-- required-begin --> <script src="libs/jquery-2.1.4.min.js"></script> <script src="libs/echarts-4.0.2.js"></script> <script src="libs/china.js"></script> <!-- required-end --> <!-- 自定义配置-begin --> <script src="js/map-china.js"></script> <!-- 自定义配置-end --> </body> </html> ~~~ * * * * * ### 4. `map-china.js` ~~~ var wrap= document.getElementById('map'), wrapW=wrap.getBoundingClientRect().width, chart = echarts.init(wrap); var option = { backgroundColor: '#33a3dc', title: { show: true, text: '中国地图显示', subtext: '数据中心统计', left: 'center', textStyle: { color: 'white', fontSize: '16' }, subtextStyle: { color: 'smokewhite', fontSize: '13' } }, tooltip: { trigger: 'item' }, geo: { //绘制基本的地图 map: 'china', roam: true, //是否可手势或者鼠标滚轮放大缩小 left: 10, //如果为0可最大化的在画布上显示地图,但也可能边缘处有的被隐藏,所以留一定的距离 right: 10, label: { normal: { show: true, formatter: '{b}', textStyle: { color: 'red' } } }, itemStyle: { normal: { borderColor: 'rgba(0, 0, 0, 0.2)' } }, emphasis: { itemStyle: { areaColor: '#ffe600' //鼠标移动到省份上或手指点击到省份上之后高亮的颜色 } }, regions: [ //这里可自定义每一个省的颜色 { name: '甘肃', itemStyle: { areaColor: '#faa755' } }, { name: '新疆', itemStyle: { areaColor: '#ea66a6' } }, { name: '浙江', itemStyle: { areaColor: 'green' } }, { name: '北京', itemStyle: { areaColor: '#ffc20e' } } ], }, series: [{ //如果要在中国地图这一坐标里的特定位置做标记,就需要这些配置 name: '我想标出的点', type: 'effectScatter', coordinateSystem: 'geo', symbol: 'circle', symbolSize: 15, //这里也是可以用一个函数的,根据数据来决定标记的大小 label: { show: true, position: 'bottom', formatter: function(params) { console.log(params) let data=params.data; return params.name + '-' + data.capital+':'+data.man; }, fontSize: 11, color: 'white', backgroundColor: 'rgba(242,50,18,1)', borderRadius: 4, padding: [1, 2, 1, 2] }, tooltip: { show: false, }, itemStyle: { normal: { color: '#f4e925', shadowBlur: 25, } }, data: [ //在地图按照坐标找出点 {name: '新疆', capital: '库尔勒', value: [86.06,41.68], man: '帆帆挖金' }, {name: '甘肃', capital: '兰州', value: [103.73,36.03,9], man: '未来建筑师' } ], zlevel: 3 }] }; chart.setOption(option); chart.on('click', function(params) { //这里可以根据参数的不同确定点击的区域,作出不同反应 }); ~~~