ECharts地图绘制和钻取简易接口详解


Posted in Javascript onJuly 12, 2019

1.地图绘制过程原理

给定范围边界经纬度数据,再给它个名字就构成了绘制地图的基础。也就是说,你可以绘制任意形状的地图版块。

2.地图数据生成

中国以及省市县等地图的基础数据可以从这里生成与下载。

http://datav.aliyun.com/tools/atlas

有了地图范围数据,在 echarts 中通过 registerMap 给这块注册个名字,即可为后续绘制使用,以下代码以最简形式绘制一幅中国地图。

$.getJSON('https://geo.datav.aliyun.com/areas/bound/100000_full.json', function (data) {
 var name = "中国地图";
 // 注册一个地图名称
 echarts.registerMap(name, data); 
 
 var myChart = echarts.init(document.getElementById('map')); 
 var mapOption = { 
  series: [ 
  { 
   type: 'map', // 指明地图类型
   map: name,  // 指明取的名称
   label: {show:true},
   roam: true  // 可缩放
  } ]
 }; 
 myChart.setOption(mapOption, true); 
});

ECharts地图绘制和钻取简易接口详解

3.封装形成简易接口

3.1接口定义

从使用方式与期望结果出发来定义接口。期望给定区域名称,指定绘制位置(DOM元素)即可完成工作。同时希望能控制是否支持钻取,这就形成了最基础的接口定义。

/** 根据名称加载地图
 * @param elementId : DOM 元素ID
 * @param name  : 地图名称(仅已定义的地区名称)
 * @param drill  : 是否支持钻取
 */
ChinaMap.loadMap = function(elementId, name, drill) {...}

3.2接口实现

(1)支持多地图图表绘制,定义 ChartList 来记录每个DOM元素对应的图表对象。

(2)支持钻取,建立省市名称的层级关系,市编码前两位为省编码。

ChinaMap.provinceCodes={'13':'河北','14':'山西',...}
ChinaMap.cityCodes={"石家庄市":"130100","唐山市":"130200",...}

(3)动态加载相应名称的数据绘制地图,形如第2节中的示例。

(4)扩展方法:取地图层级路径。如得到“中国-湖南-长沙市”的路径,且相应的名称可点击跳转。

详细实现代码请访问:https://github.com/triplestudio/helloworld/tree/master/china_map

4.达成应用效果

4.1可钻取的中国地图

使用以下代码即可在指定的元素中绘制一幅可钻取的中国地图。

ChinaMap.loadMap('map', 'china', true);

方法 ChinaMap.loadMap 后会返回 echarts 图表对象,可以进一步进行操作。这里,使用以下代码在钻取时得到层级路径,以便达到可向上跳转的效果。

ChinaMap.loadMap('map', 'china', true).on('click', function(param){ 
 $("#path").html(ChinaMap.formatPath('map', param.name));
});

ECharts地图绘制和钻取简易接口详解

4.2各省地图

由于只需要指定名称和显示元素ID,那么遍历各省名称即可快速完成各省地图的绘制。

for(var prov in ChinaMap.provinces){
  $("#main").append("<div id='" + ChinaMap.provinces[prov] + "' class='box'></div>");
  ChinaMap.loadMap(ChinaMap.provinces[prov], prov);
}

ECharts地图绘制和钻取简易接口详解

相关代码与数据可在此下载:https://github.com/triplestudio/helloworld/releases

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
extjs tabpanel限制选项卡数量实现思路及代码
Apr 02 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
基于javascript编写简单日历
May 02 Javascript
原生js实现键盘控制div移动且解决停顿问题
Dec 05 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
Jan 14 Javascript
js+html制作简单验证码
Feb 16 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 Javascript
js实现随机点名小功能
Aug 17 Javascript
vue中,在本地缓存中读写数据的方法
Sep 21 Javascript
详解vue中localStorage的使用方法
Nov 22 Javascript
express框架下使用session的方法
Jul 31 Javascript
vue实现两个组件之间数据共享和修改操作
Nov 12 Javascript
vue cli安装使用less的教程详解
Jul 12 #Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 #Javascript
django js 实现表格动态标序号的实例代码
Jul 12 #Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 #Javascript
微信小程序开发常见问题及解决方案
Jul 11 #Javascript
使用vue for时为什么要key【推荐】
Jul 11 #Javascript
利用Angular7开发一个Radio组件的全过程
Jul 11 #Javascript
You might like
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
一个php短网址的生成代码(仿微博短网址)
2014/05/07 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
javascript getElementsByClassName实现代码
2010/10/11 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
python各层级目录下import方法代码实例
2020/01/20 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
班组长安全职责
2014/01/05 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
决心书范文
2014/03/11 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书