目前大多数的后台管理类系统都会涉及到地图使用;前端时间参与的湖北移动大屏系统使用的是Arcgis地图;最近在安徽联通开发智能调度系统使用到的是百度Echarts地图。在实际使用中遇到了一个问题;找到了解决办法;感觉有价值所以特地写一篇博客分享给大家。先描述一下背景:
智能调度系统在首页会展示一个全省地图,按照指标完成率的高低顺序进行着色渲染;如下图:
点击地图上的地市需要下钻展示该地市下区县地图。并加载完成率进行着色渲染。
百度地图在进行着色渲染时是根据区域名称来匹配的。代码上体现为:{name:'肥东县',value:45.23}如果名称匹配不上就无法着色;如上图中庐阳区、瑶海区、蜀山区、包河区;展示的是地图设置的底色蓝色。
地图上省级地图、地市级地图的展示都是需要GEOJSON数据包的;相关数据可以在网上进行下载,此处不多提!我们遇到的问题是:地图上都是行政区域!但是业务系统的数据归类都是按照实际的细分区域;造成查询出来的数据无法和行政区域匹配上,无法着色! 如果你听不懂行政区域和细分区域,那么我来给你举个栗子!我们在寄快递或者订外卖的时候经常会发现这点,上图中的蜀山区下面有高新技术开发区、政务新区等等,这些子区域实际上都是归属蜀山区,但是系统中记录用户地址、营销推广区域时用的都是政务新区这类细分区域名称。这种情况是实际数据区域划分更细;另外一种情况是系统中划分粒度更粗会把庐阳区、瑶海区、蜀山区、包河区统一归属为城区。
为了能够根据实际情况去匹配系统中的历史数据,我们需要对地图的信息进行改造,即:重新往下细化区域信息 或 重新往上归并区域。我们从网上下载的GEOJSON数据包(以前echarts官网可以下载;现在根据国家测绘法被禁止了;不过非官网有很多下载的地方)中的数据就需要调整;手动调整写程序来分析都太麻烦需要你具备专业知识。好在万能的网络有法子;http://geojson.io 。这个网站是让你在地图上画覆盖区然后生成GEOJSON数据的;我尝试把已有的GEOJSON数据粘贴进去发现会在地图上进行标注;那么问题就迎刃而解剩下的就是体力活了!
我们本次需求是归并;下图是归并后的效果:
归并后的“城区”和我们系统表中的名称能对应上;所以按照指标完成率正常着色渲染了;上图中渲染成了绿色。
基于以上的原理可以做的事情就很多很多了!
本文由 huzd 创作,采用 知识共享署名4.0 国际许可协议进行许可本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名最后编辑时间
为:
2018/07/19 10:37