最近公司有个项目需要实现省市区下钻,本以为很简单的操作就能实现该功能,没想到遇到各种坑。只有亲自尝试方知其辛酸。
辛酸历程(纯属唠嗑):
第一版:最初LZ基于echarts去实现下钻,发现echarts3.0后就没有相应的区县的地图josn,就去网上各种找地图json,基本都是csdn提供的(下载还要钱o(╥﹏╥)o),后面我有提供免费的下载链接。最初的一版地图下钻就这么实现了,但数据联调后我发现很多地图数据都是错的,画出的轮廓以及区县数量都不对。又害我白瞎折腾了半天(主要还是前期工作没做好)
第二版:看到echart4.0官网推荐使用baidu地图作为底图去实现,参考了这个方法貌似实现了需求,在联调后又发现被坑了,地图轮廓区分明显不对,山东省和辽宁省画出来都接壤了,香港、澳门居然都没有获取到,还有很多区县都不对,如黑龙江省大兴安岭地区加格达奇区就没法获取,又白瞎折腾了(当然有可能是LZ 玩法不对)
第三版:尝试了下高德地图,发现它绘画行政区还挺准,基本上需要的区域都有,由于获取到全国省地图区域太多导致浏览器渲染时卡住了,浏览器渲染了上百万个行政区域(小群岛、小地方太多)导致奔溃,很是无赖。为提高性能最终全国省采用echarts中自带的china.json去渲染,省与地级市通过高德地图做背景层去渲染。
1、通过echarts 实现全国到省,省到市
官网有很多的案例可供参考,再次我就不提供了,给大家分享一个免费的省市区地图json
省市区地图json: 链接:https://pan.baidu.com/s/15vkSeImGdj56mdtYrKHZJg 密码:vizh
2、通过百度地图为底图实现全国、省、地级市下钻
可通过百度地图自定义底图 http://lbsyun.baidu.com/custom/ 去掉不必要的背景层,从而配置类似echart china.json地图,
主要用到的自定义底图、覆盖物类Overlay、服务类Boundary等,具体可参考百度地图API官网。由于该种方式并没有实现理想效果且和后续的高德地图类似,在此就不提供实现代码了,主要参考后续高德地图。
最后附上百度地图实现效果图
全国
省
市