ECharts支持地理坐标显示,专门提供了一个geo组件
,在setOption
中提供option.geo
配置即可显示地图。
option.geo
配置中有个map
属性,取值为已通过 echarts.registerMap("name", geojson)
注册的name
值,来关联到对应的geojson数据文件;注册不同名称的geojson地图数据,再修改option.geo.map
和regions
,就能切换显示不同的地图。
具体参考官方文档:https://echarts.apache.org/zh/option.html#geo
GeoJSON数据文件获取
阿里云的DataV.GeoAtlas
可以在线获取到数据,不过数据比较旧(更新于2021.5),截止到2022年12月9日已经一年半的时间没有更新,鉴于浙江省有很多区县的区划有变更调整,不建议使用DataV.GeoAtlas
的数据。
到AreaCity-JsSpider-StatsGov
开源库可以下载到新的geojson数据,包括四级区划数据、省市区三级坐标边界数据、乡镇级坐标边界数据:
- 在线预览和下载(Gitee):https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/geo-echarts.html (提供了ECharts + 高德地图四级下钻代码)
- 开源库(GitHub):https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov
- 一般一月一更(直接从高德同步,忙的时候没时间会久一点)
下载到的数据是最新的csv文件,同时下载一下开源库提供的转换工具,工具支持将csv数据转换成:shp、geojson、sql、导入数据库、坐标系转换,功能比较丰富,我们只需转成geojson即可。
转换出来的geojson是一个大的文件,里面包含了全国省市区所有数据,我们在ECharts中一般是使用拆分的文件,每个区县一个文件这种,我们到工具的高级功能中拆分这个大的文件成小文件,点开工具的高级功能,里面切换到geojson拆分功能,即可将文件按省市区县进行拆分,我们需要浙江省的数据就copy浙江下面的文件即可。
一般每年都会有地方有区县的变更,所以数据需要按时更新,建议至少一年更新一次数据,更新时按步骤重新下载最新的数据操作一遍即可。
在ECharts中绘制浙江省的数据
我们得到浙江省geojson文件后,里面每个市、区都有对应的一个json文件,我们根据需要展示的地方加载对应的json文件,然后通过echarts.registerMap("City"+城市id, geojson)
来注册地图。
然后更新echarts实例的option.geo.map
和regions
,就能在echarts里面显示这个geojson地图了。
给地图绑定点击事件,点击地图的一个城市时,重复上面的步骤,加载下一级json文件,再注册,再显示;这样就可以做到多级下钻。
放张浙江杭州的geojson渲染图吧,比较直观:
相关代码可以参考这个demo页面,里面实现了ECharts Map四级下钻,和一个高德地图上的绘制显示,前端源码在页面底下。不过这个demo太过于复杂,不方便copy代码使用,过几天我会专门写一篇文章来介绍ECharts Map代码的编写,敬请期待~
【完】