示例简介

echarts官方只提供全国地图,但是实际项目过程中,经常需要精确到镇区;本文通过实例介绍两种实现镇区地图效果的方法

echarts调整地图颜色(echarts实现镇区地图效果)(1)

自定义地图

第一种的实现过程:

1、打开网址“http://datav.aliyun.com/tools/atlas”,显示如下图的效果;

2、左上角输入要生成的区域名字,比如“揭阳市”,输入“揭阳市”后,输入框下面会出现揭阳市的信息,点击后下面的信息和地图会更新为揭阳市的内容;

3、根据项目实际情况,下载相对应类型的文件,该实例选择“geojson”,包含子区域。

echarts调整地图颜色(echarts实现镇区地图效果)(2)

第二种的实现过程:

1、使用工具“BIGEMAP”生成每个区域的kml文件,选择行政区域后点击红色框的箭头就可以保存该区域的kml文件;

延伸:如果需要实现镇区以下,可以选择到第四个下拉框。

echarts调整地图颜色(echarts实现镇区地图效果)(3)

2、打开网址“http://geoJson.io”,点击“open-file”选择生成的kml文件,地图显示对应的区域,右边json自动生成数据;

echarts调整地图颜色(echarts实现镇区地图效果)(4)

3、重复步骤1-2,把其它区域全部导入,最终效果如下;

echarts调整地图颜色(echarts实现镇区地图效果)(5)

4、图中“json”就是我们需要的数据,另存为json文件到本地。

注意:

引用后经常会出现错误“echarts.min.js:45 Uncaught Error: Invalid geoJson format”,这个错误是部分区域的格式不对;下图为正确的格式,且错误的格式一般都是红色框的位置;

echarts调整地图颜色(echarts实现镇区地图效果)(6)

比如第二种方法生成的json,就报了上面的问题,只需要修改下图地方就可以解决(错误的格式是数组,删掉前面,只保存最后一个值);

echarts调整地图颜色(echarts实现镇区地图效果)(7)

在自定义地图上实现图表效果

实现代码如下,主要分析几个重点:

1、series下的data的属性“name”要跟json的“name”对应;

2、有时候区域名称未显示在该区域的最中间,可以修改json里面的字段“cp”,如果没有该字段可自己添加。

Tips:“jy.json”即为上面两种方法生成的数据。

<!DOCTYPE html> <html style="height: 100%"> <head> <meta charset="utf-8"> </head> <body style="height: 100%; margin: 0"> <div id="container" style="height: 100%; background-color: #eee;"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script> <script type="text/javascript"> var dom = document.getElementById("container"); var myChart = echarts.init(dom); var app = {}; var option; myChart.showLoading(); $.get('jy.json', function(geoJson) { myChart.hideLoading(); echarts.registerMap('jy', geoJson); myChart.setOption(option = { title: { text: '全市办件量分布图' }, tooltip: { trigger: 'item', formatter: '{b}<br/>{c} (件)' }, toolbox: { show: true, orient: 'vertical', left: 'right', top: 'center', feature: { dataView: { readOnly: false }, restore: {}, saveAsImage: {} } }, visualMap: { min: 800, max: 50000, showLabel: !0, left: 26, bottom: 40, text: ['高', '低'], pieces: [{ gt: 2000, label: "> 2000", color: "#7f1100" }, { gte: 1500, lte: 2000, label: "1500 - 2000", color: "#ff5428" }, { gte: 1000, lt: 1500, label: "1000 - 1500", color: "#ff8c71" }, { value: 0, color: "#ffffff" }] }, series: [{ name: '全市办件量分布图', type: 'map', mapType: 'jy', // 自定义扩展图表类型 label: { show: true, color: '#fff' }, data: [ { name: '榕城区', value: 2000 }, { name: '揭东区', value: 2500 }, { name: '揭西县', value: 1200 }, { name: '惠来县', value: 1600 }, { name: '普宁市', value: 1300 } ] }] }); }); if (option && typeof option === 'object') { myChart.setOption(option); } </script> </body> </html>

注意事项

可使用网站“http://api.map.baidu.com/lbsapi/getpoint/index.html”进行坐标拾取。

,